编程语言
首页 > 编程语言> > java-Restful webservices…放置或发布以进行更新

java-Restful webservices…放置或发布以进行更新

作者:互联网

我有一个宁静的Web服务,我正在为其编写新的方法调用.新方法调用的目的是将一个人的状态撤销为“否”.

我必须在请求中发送的是一个Person_Id,其状态需要更改为“ NO”.

我应该使用PUT还是POST执行此操作?

如果使用put,是否可以仅将person_id作为路径参数发送,而不使用任何xml.
(例如:http:// serverName / PersonServices / Person / 123456),并且在服务层中,我有这样的代码.

    @PUT
    @Path("/Person/{person_Id}")
    @Consumes("application/xml")
    @Produces("application/xml")
    public JAXBElement<GetUsageTokenType> updateLicenseStatus(
            @PathParam("person_Id") final Long personId) {

            //code to change the status
     }

或者我应该使用POST来执行此操作…
我是说对了,如果我使用POST,我需要发送xml格式吗?

解决方法:

如果您查看Which HTTP methods match up to which CRUD methods?,则会显示映射

Create = PUT with a new URI
         POST to a base URI returning a newly created URI  
Read   = GET  
Update = PUT with an existing URI  
Delete = DELETE

如果您阅读了每个动词的定义HTTP RFC,就会明白为什么…

回应:

can I just send the person_id as a path parameter and not use any xml
at all

那么理想情况下,您的网址

http://serverName/PersonServices/Person/123456

应该是

http://serverName/PersonServices/RevokePerson/123456

如果您不想传递任何XML / JSON / etc,但是对于人类可读的URL是否是RESTful服务的功能,则这将有助于维护性llloooonnnggg-running argument

正如评论中提到的那样,RESTful API应该专注于内容而不是操作.参见:例如Why does including an action verb in the URI in a REST implementation violate the protocol?.

因此,您需要将一个人传递给URL,然后根据HTTP动词执行相关的CRUD操作.如果您只想传递一个ID,那么您将不得不猜测将PUT放入ID时需要进行的更新……除非您知道永远不会进行任何其他更新.

标签:webservice-client,amazon-web-services,rest,web-services,java
来源: https://codeday.me/bug/20191127/2075132.html