Как фильтровать и извлекать записи с помощью MagicalRecord?

Я думаю, что Клаудио прав - вы могли бы использовать Джерси, но вы были бы сами по себе, чтобы обрабатывать параметры запроса, так как он соответствует только пути.

Вы можете ввести UriInfo и вытащить параметры запроса из этого:

@Path("/operation") 
public class Operation {

    @Context
    protected UriInfo info;

    @GET 
    public String operation() {
        if (info.getQueryParameters().containsKey("create"))
            // do stuff
        else if (info.getQueryParameters().containsKey("info"))
            // other stuff
    } 

}

blockquote>

Вы можете переключиться с Джерси на другую структуру. Я считаю, что Spring может маршрутизировать несколько методов на основе параметров запроса.

Как вы уже упоминали, возможно, вы могли бы написать что-то более стандартное, а затем переназначить запросы на это , Например, для изменения запроса можно использовать фильтр Servlet или внешний сервер, например Apache httpd или nginx.

Мышление в терминах ресурсов что это за действия? Учетные записи клиентов, фильмы, биржевые торги и т. Д. Для аргументов, скажем, это «Foo». Вы можете пойти с чем-то вроде этого:

@Path("/foo") 
public class FooResource {

    @Context
    protected UriInfo info;

    @GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Foo getById(@QueryParam("id") int id) {
         // get Foo by id
         Foo = ....

         // return an instance of Foo and let Jersey convert it to XML
         // or JSON depending on the "Accept" header that the client sent
         return foo;
    } 

    @POST
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Response create(Foo instance)
    {
         // let Jersey deserialize the request body from JSON or XML.
         // save the instance however you want
         int id = fooService.save(instance);

         // return a 204 "created" with a "Location" header
         URI location = info.getAbsolutePathBuilder().path("{id}").build(id);
     return Response.created(location).build();
    }

}

blockquote>

Кажется, что ваша структура URI задана кем-то другим, поэтому это может быть не вариант для вас. Если вы выполняете текущую структуру URI, есть одна серьезная ошибка, о которой вы должны знать.

В соответствии с спецификацией HTTP 1.1 , запросы GET должны быть idempotent . Похоже, что ваш текущий проект создает новые экземпляры на стороне сервера с запросами GET. Существует потенциал для поломки ... промежуточные прокси или веб-браузеры могут кэшировать ответы на ваши запросы GET и предотвращать создание новых экземпляров.

0
задан Hemang 26 February 2015 в 11:45
поделиться