2012-02-02 5 views
1

시간을내어 읽어 주셔서 감사합니다. 나는 Stack Overflow를 살펴 보았지만 유사한 질문은 보지 못했다.하지만 내가 빠지면 ​​사과한다.REST를 사용하여 객체 배열을 게시하는 표준 기술

그래서 REST API의 첫 번째 소비자 인 사용자 인터페이스와 함께 RESTful API를 작성합니다.

개체를 만들 필요가 있습니다. 그 객체의 생성은 상당한 양의 구성을 필요로합니다.

필자가 필요로하는 동사 (POST -이 점을 논점으로하지 말 것)와 URL 경로에 대해 알고 있습니다. 내 질문은 매개 변수를 구성하는 방법에 관한 것입니다. 무신론자가 될 수 있도록 저를 JSON 형식으로 당신에게 샘플 구성 개체를 들어 보겠습니다 :

{ 
    name: "foo", 
    barid:1, 
    features:[ 
     { 
     id:1, 
     config: { 
      foo:bar, 
      fubar:baz 
     } 
     }, 
     { 
     id:2, 
     config: { 
      foo:bar, 
      fubar:baz 
     } 
     },... 
    ] 
    } 

그래서 궁금하네요 어떤이가를 ... 기능 매개 변수를 POST하는 올바른 방법은 무엇인가? "features"를 JSON 문자열로 만들고 서버 측에서 비 직렬화해야합니까? RESTful POST에서 중첩 된 객체 배열을 만들기 위해 따라야 할 규칙이 있나요? 다른 개발자는이 소비해야 할 것, 그리고 나는 확실히 사람들이 jQuery를이처럼 보였다 내 JSON 객체로 무슨 짓을했는지-구성으로 손에 갖고 싶어하지 않습니다

features[0][featureid]:2 
features[0][configuration][min]:-64 
features[0][configuration][max]:50 
features[0][include]:true 
features[1][featureid]:3 
features[1][configuration][min]:0 
features[1][configuration][max]:80.5 
features[1][include]:true 

내 Grails의 응용 프로그램이 마음에 들지 않았다 그 대단히 :)

시간 내 주셔서 다시 한번 감사드립니다.

답변

2

Grails는 features[0].featured=2&features[0].configuration.min=-64과 같은 매개 변수를 사용할 수 있지만 실제 매핑 전에 빈 구조와 기능 배열을 준비해야합니다. 그것은 다음과 같습니다

import org.apache.commons.collections.ListUtils 
import org.apache.commons.collections.Factory 

class DataCommand { 

    String name 

    List features = = ListUtils.lazyList([], { 
     new FeatureCommand(
      configuration: new ConfigurationCommand() 
    ) 
    } as Factory) 

} 

+

class FeatureCommand { 
    int featured 
    ConfigurationCommand configuration 
} 

class ConfigurationCommand { 
    int min 
    int max 
} 

lazyList 수요에 목록 요소를 작성합니다. 기능의 정확한 양을 알고 있다면 lazyList를 사용하여 수동으로 채울 수 있습니다.

Btw 또한 요청 매개 변수 대신 실제 JSON을 서버에 POST/PUT하는 좋은 방법입니다. 예를 들어 BackboneJS의 기본 방법입니다. 따라서 사용자는 들어오는 JSON을 동일한 명령으로 매핑 할 수 있습니다 (구성이 거의 필요하지 않음).

+0

안녕하세요 Splix - 나는 Grails에 대해 알지 못했고 머리를 고맙게 생각합니다. 나는 그것을 미래에 사용할 것이다 (그리고 그것을 사용하기 위해 또 다른 애플 리케이션을 리팩터링 할 수있다).하지만 결국 나는 Grails에 관한 것이 아니라 REST에 관한 질문을 정말로하고있다. 다른 사람들이 내 RESTful API를 사용하게 될 것이기 때문에 놀랄 일도없는 원칙에 따라 작동하고 API가 언어 및 플랫폼에 관계없이 작동하는 방식으로 내 API를 사용하는지 확인하고 싶습니다. – JSager

+0

표준 JSON (POST 본문)을 사용할 수 있습니다. 일반적으로 대부분의 언어에서 JSON을 사용할 수 있습니다. 검색어 매개 변수를 선호하는 경우 - 'features [0] .featured = 2'형식으로 문제가 발생하지 않습니다. 공통적이기도합니다. (처음으로 'features [0] [featured] : 2'를 보았을 때) –

+0

감사. JSON 문자열 경로를 지금 보겠습니다. – JSager

관련 문제