複数の属性を持つオブジェクトにCRUDWebサービスを実装しています。次のような単一のタイプを定義する必要があります
<xs:complexType name="tProject">
<xs:sequence>
<xs:element name="id" type="xs:int" minOccurs="0" />
<xs:element name="projectname" type="xs:string" minOccurs="0" />
<xs:element name="projectnum" type="xs:string" minOccurs="0" />
<xs:element name="description" type="xs:string" minOccurs="0" />
<!-- here another 30-some attributes -->
</xs:sequence>
</xs:complexType>
そしてそれをすべての操作に使用します:
GetProjectには、要求と応答の両方にtProjectが含まれています。応答として、すべてのフィールドが表示されますが、リクエストには、プロジェクトを識別するためのキー列(idおよび/またはprojectname)が含まれている必要があります。これは、消費者が知っておく必要があることであり、インターフェイスの説明には明確に記載されていません。
UpdateProjectリクエストには、キー列(idおよび/またはprojectname)と更新される列が含まれている必要があります。繰り返しになりますが、インターフェイスをチェックするだけではわかりません。すべてがminOccurs="0"であるためです。
- CreateProjectリクエストには、プロジェクトで最初に必要なフィールドがいくつか含まれている必要があります。IDはWSによって作成され、コンシューマーに返送する必要があります。応答は再びtProjectになりますが、IDのみが含まれます。
すでにここに書いたとき、それはwsdl設計に関するすべてに違反しているように感じます。