REST creation without persisting

Right now I have a REST service which creates a report via a POST:

POST http://myhost/reports

The report however is not persisted, and cannot later on be retrieved via a GET:

GET http://myhost/reports/{id}

Instead I return the report immediately in the response to the POST. Am I violating any REST principle here, eg anything a POST creates should always be accessible via a GET, or is this setup OK?


No, you are not violating REST. As long as your interface is uniform it is up to you to determine what actions the urls of your API perform.

As part of your documentation you simply need to state which methods are valid for certain resources and which aren't. I really like to use the Twitter API as a good example of "What to do"

Example: Twitter REST API

POST statuses/update

does not create an object available for access at

GET statuses/update/3

The POST method isn't a synonym to the create in CRUD. The POST method is used for any operation that isn't standardized, so as long as you document what it does, you're not violating REST, no matter what you do.

There's no such REST principle saying "anything a POST creates should always be accessible via a GET". This is a common misunderstanding due to conflating REST with CRUD. Read this answer for some clarification on that.

In informal language, what a POST says to the server is "take this data and apply it to the resource identified by the given URI, following the rules you documented for the resource media type."


The action performed by the POST method might not result in a resource that can be identified by a URI. In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on whether or not the response includes an entity that describes the result.

So according to the HTTP standard this is okay.

链接地址: http://www.djcxy.com/p/71266.html

上一篇: 在处理不同类型的GET时,我应该如何格式化REST API

下一篇: REST创建没有持续