2012-08-14 5 views
1

OData v3을 사용하는 WFC 데이터 서비스가 있습니다. REST 사양에 따라 Entity Framework를 사용하여 엔터티 (이 경우 클라이언트)를 추가하는 POST에 의해 호출되는 메서드를 만들었습니다.WCF 5 - OData 3 POST 사용

모든 것이 잘 작동하고 예상대로 추가되지만 문제는 쿼리 문자열을 사용하여 필요한 "일반"POST를 의미하는 모든 매개 변수를 전달하는 것이 보통 편안하지 않고 보통 application/x-www-form-urlencoded이며 요청 본문에 매개 변수를 대신 보냅니다. 쿼리 문자열의. WCF Data Services는 이것을 비교적 단순한 방식으로 허용하지 않습니다.

내가 알고 있어야하는 쿼리 문자열을 사용하여 (쿼리 문자열의 분명한 크기 제한 외에) 주요 단점/보안 문제가 있습니까? 요청 본문에 매개 변수를 보내고 수백만 개의 농구를 뛰어 넘지 않고 application/x-www-form-urlencoded을 사용할 수 있습니까?

모든 쿼리 문자열을 사용하는 것이 옳다고 생각하지 않습니다.

답변

2

OData를 사용하여 엔티티를 만드는 표준 방법은 엔티티 집합 URL (엔터티를 삽입하려는 엔티티 집합)에 POST를 보내는 것입니다. POST는 ATOM 또는 JSON 페이로드로 본문에 엔터티를 포함합니다. http://www.odata.org/documentation/operations#CreatingnewEntries

서비스 작업을 사용하여 새로운 엔티티를 만드는 것은 가능하지만 그렇게 일반적이지 않습니다. 현재 심각한 해킹없이 매개 변수를 본문 내부의 서비스 작업으로 보낼 수 없습니다.

+0

지금 나는 spec : P를 읽지 않는 것에 대해 어리 석다. 이제는 json을 사용하여 다른 엔티티에 링크를 추가하는 방법에 갇혀 있습니다. 이것은 내 애플 리케이션에서 서버로 전송하는 것이다 : https://gist.github.com/3350494 이것은 클라이언트를 요청할 때 얻는 것이다 : https://gist.github.com/3350537. – jere

+0

400 개의 잘못된 요청이 계속 발생합니다. 협회가 json에서 제대로 설정되지 않았기 때문일 수 있습니까? 감사. – jere

+0

연관 링크가 틀렸고 날짜도 잘못된 형식이었습니다. 해결 된 – jere