ผยอง: ลบคุณสมบัติของคลาสออกจากค่าตัวอย่างพารามิเตอร์

ฉันใช้ Swagger เพื่อจัดทำเอกสาร REST API

ฉันมีชั้นเรียนเช่นนี้:

public class Source{ 
    private String url;
    private String category;
    private String label;
    ... 
}

ขณะนี้ฉันกำลังใช้ @ApiImplicitParam เพื่อตั้งค่า dataType เป็น Source.class แต่ฉันมีคำขอ POST หลายคำขอที่ได้รับ JSON เป็นพารามิเตอร์ body สมมติว่ามีตัวแปรตัวเดียวในนั้น เช่น:

{"label": "labelA"}

เนื่องจาก dataType ตั้งค่าไว้ก่อนหน้านี้ ค่าตัวอย่างที่แสดงโดย Swagger UI จึงเป็น Source.class ทั้งหมด มีลักษณะดังนี้:

{
    "url": "string",
    "category": "string",
    "label": "string",
    ...
}

ฉันสามารถสับค่าตัวอย่างที่แสดงโดย Swagger UI สำหรับทุกคำขอของสิ่งเหล่านั้นได้หรือไม่ ฉันหมายความว่าคำขอ getSourceFromUrl() ควรได้รับ JSON ที่มีเฉพาะฟิลด์ url และตัวอย่างควรแสดงสิ่งนี้ทุกประการ ไม่ใช่ Source.class JSON แบบเต็ม

ขอขอบคุณทุกท่านล่วงหน้า!

อัปเดต

ผมใช้ JAX-RS กรุณาขอข้อมูลเพิ่มเติมหากจำเป็น


person cr1ng3    schedule 26.07.2016    source แหล่งที่มา
comment


คำตอบ (2)


หากคุณใช้ springfox-swagger2 จะมีคำอธิบายประกอบ @ApiModelProperty ที่ทำสิ่งนี้

ตัวอย่าง:

@ApiModelProperty(required = false, hidden = true)
private String label;
person WannaBeGeek    schedule 26.07.2016
comment
ขอบคุณมากสำหรับการตอบรับ ปัญหาของฉันคือฉันมีจุดปลายหลายจุด และฉันต้องการใช้คลาสเดียวกันเป็นค่าตัวอย่างพารามิเตอร์กับจุดสิ้นสุดทั้งหมด แต่มีชุดคุณสมบัติของคลาสต่างกัน ฉันใช้ JAX-RS (ฉันจะอัปเดตโพสต์ของฉัน) ป.ล.: ฉันเชื่อว่า @ApiModelProperty สามารถใช้ภายในคลาสได้ และจะส่งผลต่อจุดสิ้นสุดทั้งหมดที่ใช้คลาสนี้เป็นค่าตัวอย่าง ฉันผิดหรือเปล่า? - person cr1ng3; 26.07.2016

คุณไม่สามารถทำสิ่งนั้นได้ในขณะนี้ คุณต้องสร้างคลาสที่แตกต่างกันสำหรับแต่ละกรณี

ดูใน github ของ swagger-core: https://github.com/swagger-api/swagger-core/issues/1863#issuecomment-237339565

person cr1ng3    schedule 10.08.2016