Thanks Taher for the great proposal!
+1.
I tested Swagger OpenAPI editor[1], both 2.0 and 3.0.n regulations support
multiple methods for one uri/path, here is my test code (yaml format):
openapi: "3.0.1"
info:
title: OFBiz OpenAPI Test
description: OFBiz OpenAPI Test
version: 1.0.0
tags:
- name: "pet"
description: "Everything about your Pets"
externalDocs:
description: "Find out more"
url: "http://swagger.io"
paths:
/webtools/control/pet:
get:
tags:
- "pet"
summary: "Add a new pet to the store"
description: ""
operationId: "addPet"
parameters:
- in: "query"
name: "body"
description: "Pet object that needs to be added to the store"
required: true
schema:
$ref: "#/components/schemas/Pet"
responses:
405:
description: "Invalid input"
post:
tags:
- "pet"
summary: "Update an existing pet"
description: ""
operationId: "updatePet"
parameters:
- in: "query"
name: "body"
description: "Pet object that needs to be added to the store"
required: true
schema:
$ref: "#/components/schemas/Pet"
responses:
400:
description: "Invalid ID supplied"
404:
description: "Pet not found"
405:
description: "Validation exception"
components:
schemas:
Category:
type: "object"
properties:
id:
type: "integer"
format: "int64"
name:
type: "string"
xml:
name: "Category"
Tag:
type: "object"
properties:
id:
type: "integer"
format: "int64"
name:
type: "string"
xml:
name: "Tag"
Pet:
type: "object"
required:
- "name"
- "photoUrls"
properties:
id:
type: "integer"
format: "int64"
category:
$ref: "#/components/schemas/Category"
name:
type: "string"
example: "doggie"
photoUrls:
type: "array"
xml:
name: "photoUrl"
wrapped: true
items:
type: "string"
tags:
type: "array"
xml:
name: "tag"
wrapped: true
items:
$ref: "#/components/schemas/Tag"
status:
type: "string"
description: "pet status in the store"
enum:
- "available"
- "pending"
- "sold"
xml:
name: "Pet"
externalDocs:
description: "Find out more about Swagger"
url: "http://swagger.io"
Kind Regards,
Shi Jinghai
[1] https://editor.swagger.io/
-----邮件原件-----
发件人: Taher Alkhateeb [mailto:[email protected]]
发送时间: 2018年8月9日 23:31
收件人: OFBIZ Development Mailing List
主题: [Proposal] Enhance the controller logic to accommodate HTTP methods and
prepare for REST
Hello Everyone,
We want to make this formal with proper community consensus and I will
try to keep this short.
In [1] Mathieu Lirzin is providing some (in my opinion) good work on
converting the Control Servlet logic to be able to handle the
different HTTP methods (GET, POST, etc ...) The purpose of the work in
this JIRA is simple. You should be able to call a request with a
different HTTP methods by using a format like <request-map uri="ping"
method="post">. You can find a more detailed discussion in [2]. This
is the first step of a multi-step process to be able to integrate REST
API with OFBiz.
So, this is a proposal to apply the following:
1- Enhance the controller to be able to accommodate one-or-more HTTP
methods (method="GET,POST")
2- Enhance the controller to further be able to get "patterns" that
can be mapped to REST APIs. So a request like
https://host/control/request/customer/orders/1/orderName can be
processed as a resource
Please correct me if I was wrong on anything written here Mathieu, and
please everyone provide your feedback if you approve of moving forward
with this initiative.
[1] https://issues.apache.org/jira/browse/OFBIZ-10438
[2] https://s.apache.org/ec2r