Grails с JAX-RS и UrlMappings для служб RESTful

Я начал искать подключаемый модуль JAX-RS для Grails и подумал, что это правильный путь, главным образом потому, что он основан на JSR-311, и я полагаю, что следование стандартам обычно разумно. Однако, используя UrlMappings Grail, кажется, я в основном достиг того же самого. Я полагаю, что что-то упускаю, однако мы не делаем ничего слишком сложного. Нам просто нужно открыть CRUD через API. Пример выполнения одного и того же с обеими версиями:

ДЖАКС-РС:

@PUT
@Consumes(['application/json'])
@Produces(['application/json'])
Response putUser(User user) {
  user.save(flush:true)
  ok user
}

Грааль:

def update = {
  def user = new User(params['user'])
  user.save(flush:true)
  render user as JSON
}

Очевидно, это слишком упрощенный пример, и, как я уже сказал, возможно, я упускаю что-то важное. Кроме того, встроенный механизм Grails хорош тем, что вместе с ним можно использовать Content Negotiation.

У кого какие мнения по этому поводу?


person Gregg    schedule 27.10.2010    source источник


Ответы (2)


Мне пришлось принять такое же решение, и я обнаружил, что проще использовать сопоставления URL-адресов, потому что API не был таким сложным, и было ограниченное количество вызовов API, которые необходимо было поддерживать.

Если бы дело дошло до того, что было бы легче поддерживать на основе LOE и ресурсов, способных поддержать реализацию.

person Aaron Saunders    schedule 27.10.2010
comment
Вот к чему я склоняюсь, Аарон. Я полагаю, если позже что-то станет более сложным, я всегда могу изменить механизм. - person Gregg; 28.10.2010

Плагин jax-rs очень полезен, если вы создаете веб-сервисы прямо для своих моделей доменов. Он дает вам команду «генерировать ресурс», которая автоматически создает CRUD API для вашей модели.

Grails генерирует ресурс mydomain.Model

Эта часть, кажется, работает нормально, однако я столкнулся с несколькими ошибками/проблемами с плагином, который мне, наконец, пришлось реализовать службы REST с использованием сопоставления URL.

Хотя метод сопоставления URL-адресов кажется более кодовым, он отлично работает.

import grails.converters.JSON

class ModelServiceController {
    def id = params.id
    def myModel = MyModel.findById(id)
    render myModel as JSON
}

Вот ссылка для Grails REST

http://grails.org/doc/1.0.x/guide/13.%20Web%20Services.html

person ibaralf    schedule 26.09.2011