#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#


### shengyu getway proxy orderSave
POST http://localhost:9195/springcloud/order/save
Accept: application/json
Content-Type: application/json

{
  "id": 123,
  "name": "order"
}


### shengyu getway proxy orderSave
GET http://localhost:9195/springcloud/order/findById?id=123
Accept: application/json
Content-Type: application/json

### shengyu getway proxy path
GET http://localhost:9195/springcloud/order/path/123/hahah
Accept: application/json
Content-Type: application/json

### shengyu getway proxy path
GET http://localhost:9195/springcloud/order/path/123/name
Accept: application/json
Content-Type: application/json


### shengyu getway proxy findByUserId
GET http://localhost:9195/springcloud/test/findByUserId?userId=123
Accept: application/json
Content-Type: application/json


### shengyu getway proxy not support
POST http://localhost:9195/springcloud/new/feature/gateway/not
Accept: application/json
Content-Type: application/json

## must is fail

### shengyu getway proxy used request mapping path
POST http://localhost:9195/springcloud/new/feature/request/mapping/path
Accept: application/json
Content-Type: application/json

### shengyu getway proxy used request mapping path
GET http://localhost:9195/springcloud/new/feature/request/mapping/path
Accept: application/json
Content-Type: application/json

### shengyu getway proxy used get mapping path
GET http://localhost:9195/springcloud/new/feature/get/mapping/path
Accept: application/json
Content-Type: application/json

### shengyu getway proxy used post mapping path
POST http://localhost:9195/springcloud/new/feature/post/mapping/path
Accept: application/json
Content-Type: application/json

### shengyu getway proxy used put mapping path
PUT http://localhost:9195/springcloud/new/feature/put/mapping/path
Accept: application/json
Content-Type: application/json

### shengyu getway proxy used delete mapping path
DELETE http://localhost:9195/springcloud/new/feature/delete/mapping/path
Accept: application/json
Content-Type: application/json

### shengyu getway proxy used get mapping path [class annotation]
GET http://localhost:9195/springcloud/class/annotation/get
Accept: application/json
Content-Type: application/json

### shengyu getway proxy used post mapping path [class annotation]
POST http://localhost:9195/springcloud/class/annotation/post
Accept: application/json
Content-Type: application/json

### shengyu getway proxy used upload file
POST http://localhost:9195/springcloud/upload/file
Cache-Control: no-cache
Content-Type: multipart/form-data; boundary=WebAppBoundary

--WebAppBoundary
Content-Disposition: form-data; name="file"; filename="1.txt";
Content-Type: multipart/form-data

< ../../../../shenyu-java-examples-common/src/main/resources/1.txt
--WebAppBoundary--
