You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicecomb.apache.org by bismy <bi...@qq.com> on 2018/07/27 02:40:26 UTC
回复: [DISCUSS] Swagger parameter default values while generatingtheschema file
@zzzwjm
For this:
``quot
for primitive type, even there is no @DefaultValue annotation, should have it's default value
``
Do we need to consider required = true? Why we should give default value to primitive types even when required = true?
As I know, JAX-RS do not have an annotations to specify required property, and it's implementation some like required=false, and give primitive types the java default value.
And Spring MVC(spring boot implementation) defaults to required=true, if primitive types not given, will throw Bad Param exception.
------------------ 原始邮件 ------------------
发件人: "zzzwjm"<zz...@gmail.com>;
发送时间: 2018年7月26日(星期四) 晚上10:00
收件人: "dev"<de...@servicecomb.apache.org>;
主题: Re: [DISCUSS] Swagger parameter default values while generatingtheschema file
" e. when generating swagger, generate defalutValue only when explicitly
specified."
add another point:
for primitive type, even there is no @DefaultValue annotation, should have
it's default value
2018-07-26 19:42 GMT+08:00 bismy <bi...@qq.com>:
> My suggestions are as follows
> 1. Encourage providers to specify required & defalutValue explicitly.
> a. when required=true and defaultValue is given, if consumers do not
> give a value, use default value;
> b. when required=true and defaultValue is not given, if consumers do
> not give a value, throw a BadParam exception.
> c. when required=false and defaultValue is given, if consumers do not
> give a value, use default value;
> d. when required=false and defaultValue is not given, give default
> values to parameter according to java conventions. e.g. integer is 0 and
> object is null.
> e. when generating swagger, generate defalutValue only when explicitly
> specified.
>
>
> 2. As I know from PR[2], JAX-RS do not have annotations to specify
> required, required is always false. This is different from Spring MVC,
> which required defaults to true.
> a. JAX-RS defaults: required=false and defalutValue not specified
> b. Spring MVC default: required=true adefalutValue not specifiednd
>
>
>
>
> This suggestion seems equals to your Solution 1, the difference seems you
> take JAX-RS defaults required=true
>
>
> [1] https://docs.jboss.org/resteasy/2.0.0.GA/javadocs/
> javax/ws/rs/DefaultValue.html
> [2] https://issues.apache.org/jira/browse/SCB-709
> [3] Spring MVC: RequestParam annotation: boolean required() default true;
>
>
> ------------------ Original ------------------
> From: "mahesh somalaraju"<ma...@huawei.com>;
> Date: Thu, Jul 26, 2018 03:23 PM
> To: "dev@servicecomb.apache.org"<de...@servicecomb.apache.org>;
> Cc: "Vinay Murudi"<vi...@huawei.com>; "Sukesh A C"<su...@huawei.com>;
> "Mohammad Asif Siddiqui"<mo...@huawei.com>;
> Subject: [DISCUSS] Swagger parameter default values while generating
> theschema file
>
>
>
> Hi All,
>
> Currently we are handling the issue related to swagger parameter default
> values while generating the swagger content.
>
> Default value annotation(@DefaultValue) we can provide for PathParam,
> QueryParam, MatrixParam, CookieParam, FormParam and HeaderParam.
>
> The query is when to consider default value for swagger parameter.
>
> Solution:1 [parameter value required case]
> While generating the swagger content:
>
> 1) consider default value(@DefaultValue) if and only the parameter
> configured required is false(required=false).
>
> 2) If default value(@DefaultValue) is not available then consider
> JAVA primitive default values only when the parameter configured required
> is false(required=false).
>
> The default values as follows:
>
> Object types --> null
>
> collection for List, Set or SortedSet --> Empty list
>
> primitive types:
>
> int, long --> 0
>
> float, double --> 0.0
>
> boolean --> false etc..
>
> 3) When the user not provided value in request(meta-data) and the
> parameter is configured with required is true(required=true) then throw
> exception by saying that "Invalid parameter".
>
> Solution:2 [General case]
> While generating the swagger content:
>
> 1) consider default value(@DefaultValue) without checking whether it
> is required or not(required=true or required=false)
>
> 2) If default value(@DefaultValue) is not available then consider
> JAVA primitive default values without checking whether it is required or
> not(required=true or required=false)
>
> The default values as follows:
>
> Object types --> null
>
> collection for List, Set or SortedSet --> Empty list
>
> primitive types:
>
> int, long --> 0
>
> float, double --> 0.0
>
> boolean --> false etc..
>
> 3) When the user not provided value in request(meta-data) , first it
> will check annotated default value field and then it will check JAVA
> primitive default values.
>
> Always some default values will be there for parameters and If user not
> given any values in request then it will consider the default values
> presented in schema content.
>
>
> Any thoughts on this?
> Please suggest which solution is best for handling the swagger parameter
> default values. Thank you in advance !
>
>
> Thanks & Regards
> Mahesh Raju Somalaraju
> Github(id: maheshrajus)
>
回复: [DISCUSS] Swagger parameter default values whilegeneratingtheschema file
Posted by bismy <bi...@qq.com>.
Well, this is fine and I think we have the same conclusion.
We implement this behavior according to mail I send before.
> > a. JAX-RS defaults: required=false and defalutValue not specified
> > b. Spring MVC default: required=true adefalutValue not specifiednd
@mahesh How do you think?
------------------ 原始邮件 ------------------
发件人: "zzzwjm"<zz...@gmail.com>;
发送时间: 2018年7月27日(星期五) 中午11:36
收件人: "dev"<de...@servicecomb.apache.org>;
主题: Re: [DISCUSS] Swagger parameter default values whilegeneratingtheschema file
if unify to jaxrs behavior, i feel that's very good.
2018-07-27 11:17 GMT+08:00 wjm wjm <zz...@gmail.com>:
> in jaxrs mode, required default to false, if primitive type not annotated
> by @DefaultValue, should generated defaultValue to swagger
> in springmvc mode, not support standard jaxrs behavior, so we no need to
> process it. (if not consider compatible to standard springmvc, i feel that
> standard jaxrs behavior is better)
>
> 2018-07-27 10:40 GMT+08:00 bismy <bi...@qq.com>:
>
>> @zzzwjm
>>
>>
>> For this:
>> ``quot
>> for primitive type, even there is no @DefaultValue annotation, should
>> have it's default value
>> ``
>>
>>
>> Do we need to consider required = true? Why we should give default value
>> to primitive types even when required = true?
>>
>>
>> As I know, JAX-RS do not have an annotations to specify required
>> property, and it's implementation some like required=false, and give
>> primitive types the java default value.
>> And Spring MVC(spring boot implementation) defaults to required=true, if
>> primitive types not given, will throw Bad Param exception.
>> ------------------ 原始邮件 ------------------
>> 发件人: "zzzwjm"<zz...@gmail.com>;
>> 发送时间: 2018年7月26日(星期四) 晚上10:00
>> 收件人: "dev"<de...@servicecomb.apache.org>;
>>
>> 主题: Re: [DISCUSS] Swagger parameter default values while
>> generatingtheschema file
>>
>>
>>
>> " e. when generating swagger, generate defalutValue only when explicitly
>> specified."
>>
>> add another point:
>> for primitive type, even there is no @DefaultValue annotation, should have
>> it's default value
>>
>> 2018-07-26 19:42 GMT+08:00 bismy <bi...@qq.com>:
>>
>> > My suggestions are as follows
>> > 1. Encourage providers to specify required & defalutValue explicitly.
>> > a. when required=true and defaultValue is given, if consumers do not
>> > give a value, use default value;
>> > b. when required=true and defaultValue is not given, if consumers do
>> > not give a value, throw a BadParam exception.
>> > c. when required=false and defaultValue is given, if consumers do not
>> > give a value, use default value;
>> > d. when required=false and defaultValue is not given, give default
>> > values to parameter according to java conventions. e.g. integer is 0 and
>> > object is null.
>> > e. when generating swagger, generate defalutValue only when
>> explicitly
>> > specified.
>> >
>> >
>> > 2. As I know from PR[2], JAX-RS do not have annotations to specify
>> > required, required is always false. This is different from Spring MVC,
>> > which required defaults to true.
>> > a. JAX-RS defaults: required=false and defalutValue not specified
>> > b. Spring MVC default: required=true adefalutValue not specifiednd
>> >
>> >
>> >
>> >
>> > This suggestion seems equals to your Solution 1, the difference seems
>> you
>> > take JAX-RS defaults required=true
>> >
>> >
>> > [1] https://docs.jboss.org/resteasy/2.0.0.GA/javadocs/
>> > javax/ws/rs/DefaultValue.html
>> > [2] https://issues.apache.org/jira/browse/SCB-709
>> > [3] Spring MVC: RequestParam annotation: boolean required() default
>> true;
>> >
>> >
>> > ------------------ Original ------------------
>> > From: "mahesh somalaraju"<ma...@huawei.com>;
>> > Date: Thu, Jul 26, 2018 03:23 PM
>> > To: "dev@servicecomb.apache.org"<de...@servicecomb.apache.org>;
>> > Cc: "Vinay Murudi"<vi...@huawei.com>; "Sukesh A C"<
>> sukeshac@huawei.com>;
>> > "Mohammad Asif Siddiqui"<mo...@huawei.com>;
>> > Subject: [DISCUSS] Swagger parameter default values while generating
>> > theschema file
>> >
>> >
>> >
>> > Hi All,
>> >
>> > Currently we are handling the issue related to swagger parameter default
>> > values while generating the swagger content.
>> >
>> > Default value annotation(@DefaultValue) we can provide for PathParam,
>> > QueryParam, MatrixParam, CookieParam, FormParam and HeaderParam.
>> >
>> > The query is when to consider default value for swagger parameter.
>> >
>> > Solution:1 [parameter value required case]
>> > While generating the swagger content:
>> >
>> > 1) consider default value(@DefaultValue) if and only the parameter
>> > configured required is false(required=false).
>> >
>> > 2) If default value(@DefaultValue) is not available then consider
>> > JAVA primitive default values only when the parameter configured
>> required
>> > is false(required=false).
>> >
>> > The default values as follows:
>> >
>> > Object types --> null
>> >
>> > collection for List, Set or SortedSet --> Empty list
>> >
>> > primitive types:
>> >
>> > int, long --> 0
>> >
>> > float, double --> 0.0
>> >
>> > boolean --> false etc..
>> >
>> > 3) When the user not provided value in request(meta-data) and the
>> > parameter is configured with required is true(required=true) then throw
>> > exception by saying that "Invalid parameter".
>> >
>> > Solution:2 [General case]
>> > While generating the swagger content:
>> >
>> > 1) consider default value(@DefaultValue) without checking whether
>> it
>> > is required or not(required=true or required=false)
>> >
>> > 2) If default value(@DefaultValue) is not available then consider
>> > JAVA primitive default values without checking whether it is required or
>> > not(required=true or required=false)
>> >
>> > The default values as follows:
>> >
>> > Object types --> null
>> >
>> > collection for List, Set or SortedSet --> Empty list
>> >
>> > primitive types:
>> >
>> > int, long --> 0
>> >
>> > float, double --> 0.0
>> >
>> > boolean --> false etc..
>> >
>> > 3) When the user not provided value in request(meta-data) , first
>> it
>> > will check annotated default value field and then it will check JAVA
>> > primitive default values.
>> >
>> > Always some default values will be there for parameters and If user not
>> > given any values in request then it will consider the default values
>> > presented in schema content.
>> >
>> >
>> > Any thoughts on this?
>> > Please suggest which solution is best for handling the swagger parameter
>> > default values. Thank you in advance !
>> >
>> >
>> > Thanks & Regards
>> > Mahesh Raju Somalaraju
>> > Github(id: maheshrajus)
>> >
>>
>
>
Re: [DISCUSS] Swagger parameter default values while
generatingtheschema file
Posted by wjm wjm <zz...@gmail.com>.
if unify to jaxrs behavior, i feel that's very good.
2018-07-27 11:17 GMT+08:00 wjm wjm <zz...@gmail.com>:
> in jaxrs mode, required default to false, if primitive type not annotated
> by @DefaultValue, should generated defaultValue to swagger
> in springmvc mode, not support standard jaxrs behavior, so we no need to
> process it. (if not consider compatible to standard springmvc, i feel that
> standard jaxrs behavior is better)
>
> 2018-07-27 10:40 GMT+08:00 bismy <bi...@qq.com>:
>
>> @zzzwjm
>>
>>
>> For this:
>> ``quot
>> for primitive type, even there is no @DefaultValue annotation, should
>> have it's default value
>> ``
>>
>>
>> Do we need to consider required = true? Why we should give default value
>> to primitive types even when required = true?
>>
>>
>> As I know, JAX-RS do not have an annotations to specify required
>> property, and it's implementation some like required=false, and give
>> primitive types the java default value.
>> And Spring MVC(spring boot implementation) defaults to required=true, if
>> primitive types not given, will throw Bad Param exception.
>> ------------------ 原始邮件 ------------------
>> 发件人: "zzzwjm"<zz...@gmail.com>;
>> 发送时间: 2018年7月26日(星期四) 晚上10:00
>> 收件人: "dev"<de...@servicecomb.apache.org>;
>>
>> 主题: Re: [DISCUSS] Swagger parameter default values while
>> generatingtheschema file
>>
>>
>>
>> " e. when generating swagger, generate defalutValue only when explicitly
>> specified."
>>
>> add another point:
>> for primitive type, even there is no @DefaultValue annotation, should have
>> it's default value
>>
>> 2018-07-26 19:42 GMT+08:00 bismy <bi...@qq.com>:
>>
>> > My suggestions are as follows
>> > 1. Encourage providers to specify required & defalutValue explicitly.
>> > a. when required=true and defaultValue is given, if consumers do not
>> > give a value, use default value;
>> > b. when required=true and defaultValue is not given, if consumers do
>> > not give a value, throw a BadParam exception.
>> > c. when required=false and defaultValue is given, if consumers do not
>> > give a value, use default value;
>> > d. when required=false and defaultValue is not given, give default
>> > values to parameter according to java conventions. e.g. integer is 0 and
>> > object is null.
>> > e. when generating swagger, generate defalutValue only when
>> explicitly
>> > specified.
>> >
>> >
>> > 2. As I know from PR[2], JAX-RS do not have annotations to specify
>> > required, required is always false. This is different from Spring MVC,
>> > which required defaults to true.
>> > a. JAX-RS defaults: required=false and defalutValue not specified
>> > b. Spring MVC default: required=true adefalutValue not specifiednd
>> >
>> >
>> >
>> >
>> > This suggestion seems equals to your Solution 1, the difference seems
>> you
>> > take JAX-RS defaults required=true
>> >
>> >
>> > [1] https://docs.jboss.org/resteasy/2.0.0.GA/javadocs/
>> > javax/ws/rs/DefaultValue.html
>> > [2] https://issues.apache.org/jira/browse/SCB-709
>> > [3] Spring MVC: RequestParam annotation: boolean required() default
>> true;
>> >
>> >
>> > ------------------ Original ------------------
>> > From: "mahesh somalaraju"<ma...@huawei.com>;
>> > Date: Thu, Jul 26, 2018 03:23 PM
>> > To: "dev@servicecomb.apache.org"<de...@servicecomb.apache.org>;
>> > Cc: "Vinay Murudi"<vi...@huawei.com>; "Sukesh A C"<
>> sukeshac@huawei.com>;
>> > "Mohammad Asif Siddiqui"<mo...@huawei.com>;
>> > Subject: [DISCUSS] Swagger parameter default values while generating
>> > theschema file
>> >
>> >
>> >
>> > Hi All,
>> >
>> > Currently we are handling the issue related to swagger parameter default
>> > values while generating the swagger content.
>> >
>> > Default value annotation(@DefaultValue) we can provide for PathParam,
>> > QueryParam, MatrixParam, CookieParam, FormParam and HeaderParam.
>> >
>> > The query is when to consider default value for swagger parameter.
>> >
>> > Solution:1 [parameter value required case]
>> > While generating the swagger content:
>> >
>> > 1) consider default value(@DefaultValue) if and only the parameter
>> > configured required is false(required=false).
>> >
>> > 2) If default value(@DefaultValue) is not available then consider
>> > JAVA primitive default values only when the parameter configured
>> required
>> > is false(required=false).
>> >
>> > The default values as follows:
>> >
>> > Object types --> null
>> >
>> > collection for List, Set or SortedSet --> Empty list
>> >
>> > primitive types:
>> >
>> > int, long --> 0
>> >
>> > float, double --> 0.0
>> >
>> > boolean --> false etc..
>> >
>> > 3) When the user not provided value in request(meta-data) and the
>> > parameter is configured with required is true(required=true) then throw
>> > exception by saying that "Invalid parameter".
>> >
>> > Solution:2 [General case]
>> > While generating the swagger content:
>> >
>> > 1) consider default value(@DefaultValue) without checking whether
>> it
>> > is required or not(required=true or required=false)
>> >
>> > 2) If default value(@DefaultValue) is not available then consider
>> > JAVA primitive default values without checking whether it is required or
>> > not(required=true or required=false)
>> >
>> > The default values as follows:
>> >
>> > Object types --> null
>> >
>> > collection for List, Set or SortedSet --> Empty list
>> >
>> > primitive types:
>> >
>> > int, long --> 0
>> >
>> > float, double --> 0.0
>> >
>> > boolean --> false etc..
>> >
>> > 3) When the user not provided value in request(meta-data) , first
>> it
>> > will check annotated default value field and then it will check JAVA
>> > primitive default values.
>> >
>> > Always some default values will be there for parameters and If user not
>> > given any values in request then it will consider the default values
>> > presented in schema content.
>> >
>> >
>> > Any thoughts on this?
>> > Please suggest which solution is best for handling the swagger parameter
>> > default values. Thank you in advance !
>> >
>> >
>> > Thanks & Regards
>> > Mahesh Raju Somalaraju
>> > Github(id: maheshrajus)
>> >
>>
>
>
Re: [DISCUSS] Swagger parameter default values while
generatingtheschema file
Posted by wjm wjm <zz...@gmail.com>.
in jaxrs mode, required default to false, if primitive type not annotated
by @DefaultValue, should generated defaultValue to swagger
in springmvc mode, not support standard jaxrs behavior, so we no need to
process it. (if not consider compatible to standard springmvc, i feel that
standard jaxrs behavior is better)
2018-07-27 10:40 GMT+08:00 bismy <bi...@qq.com>:
> @zzzwjm
>
>
> For this:
> ``quot
> for primitive type, even there is no @DefaultValue annotation, should
> have it's default value
> ``
>
>
> Do we need to consider required = true? Why we should give default value
> to primitive types even when required = true?
>
>
> As I know, JAX-RS do not have an annotations to specify required property,
> and it's implementation some like required=false, and give primitive types
> the java default value.
> And Spring MVC(spring boot implementation) defaults to required=true, if
> primitive types not given, will throw Bad Param exception.
> ------------------ 原始邮件 ------------------
> 发件人: "zzzwjm"<zz...@gmail.com>;
> 发送时间: 2018年7月26日(星期四) 晚上10:00
> 收件人: "dev"<de...@servicecomb.apache.org>;
>
> 主题: Re: [DISCUSS] Swagger parameter default values while
> generatingtheschema file
>
>
>
> " e. when generating swagger, generate defalutValue only when explicitly
> specified."
>
> add another point:
> for primitive type, even there is no @DefaultValue annotation, should have
> it's default value
>
> 2018-07-26 19:42 GMT+08:00 bismy <bi...@qq.com>:
>
> > My suggestions are as follows
> > 1. Encourage providers to specify required & defalutValue explicitly.
> > a. when required=true and defaultValue is given, if consumers do not
> > give a value, use default value;
> > b. when required=true and defaultValue is not given, if consumers do
> > not give a value, throw a BadParam exception.
> > c. when required=false and defaultValue is given, if consumers do not
> > give a value, use default value;
> > d. when required=false and defaultValue is not given, give default
> > values to parameter according to java conventions. e.g. integer is 0 and
> > object is null.
> > e. when generating swagger, generate defalutValue only when explicitly
> > specified.
> >
> >
> > 2. As I know from PR[2], JAX-RS do not have annotations to specify
> > required, required is always false. This is different from Spring MVC,
> > which required defaults to true.
> > a. JAX-RS defaults: required=false and defalutValue not specified
> > b. Spring MVC default: required=true adefalutValue not specifiednd
> >
> >
> >
> >
> > This suggestion seems equals to your Solution 1, the difference seems you
> > take JAX-RS defaults required=true
> >
> >
> > [1] https://docs.jboss.org/resteasy/2.0.0.GA/javadocs/
> > javax/ws/rs/DefaultValue.html
> > [2] https://issues.apache.org/jira/browse/SCB-709
> > [3] Spring MVC: RequestParam annotation: boolean required() default true;
> >
> >
> > ------------------ Original ------------------
> > From: "mahesh somalaraju"<ma...@huawei.com>;
> > Date: Thu, Jul 26, 2018 03:23 PM
> > To: "dev@servicecomb.apache.org"<de...@servicecomb.apache.org>;
> > Cc: "Vinay Murudi"<vi...@huawei.com>; "Sukesh A C"<sukeshac@huawei.com
> >;
> > "Mohammad Asif Siddiqui"<mo...@huawei.com>;
> > Subject: [DISCUSS] Swagger parameter default values while generating
> > theschema file
> >
> >
> >
> > Hi All,
> >
> > Currently we are handling the issue related to swagger parameter default
> > values while generating the swagger content.
> >
> > Default value annotation(@DefaultValue) we can provide for PathParam,
> > QueryParam, MatrixParam, CookieParam, FormParam and HeaderParam.
> >
> > The query is when to consider default value for swagger parameter.
> >
> > Solution:1 [parameter value required case]
> > While generating the swagger content:
> >
> > 1) consider default value(@DefaultValue) if and only the parameter
> > configured required is false(required=false).
> >
> > 2) If default value(@DefaultValue) is not available then consider
> > JAVA primitive default values only when the parameter configured required
> > is false(required=false).
> >
> > The default values as follows:
> >
> > Object types --> null
> >
> > collection for List, Set or SortedSet --> Empty list
> >
> > primitive types:
> >
> > int, long --> 0
> >
> > float, double --> 0.0
> >
> > boolean --> false etc..
> >
> > 3) When the user not provided value in request(meta-data) and the
> > parameter is configured with required is true(required=true) then throw
> > exception by saying that "Invalid parameter".
> >
> > Solution:2 [General case]
> > While generating the swagger content:
> >
> > 1) consider default value(@DefaultValue) without checking whether it
> > is required or not(required=true or required=false)
> >
> > 2) If default value(@DefaultValue) is not available then consider
> > JAVA primitive default values without checking whether it is required or
> > not(required=true or required=false)
> >
> > The default values as follows:
> >
> > Object types --> null
> >
> > collection for List, Set or SortedSet --> Empty list
> >
> > primitive types:
> >
> > int, long --> 0
> >
> > float, double --> 0.0
> >
> > boolean --> false etc..
> >
> > 3) When the user not provided value in request(meta-data) , first it
> > will check annotated default value field and then it will check JAVA
> > primitive default values.
> >
> > Always some default values will be there for parameters and If user not
> > given any values in request then it will consider the default values
> > presented in schema content.
> >
> >
> > Any thoughts on this?
> > Please suggest which solution is best for handling the swagger parameter
> > default values. Thank you in advance !
> >
> >
> > Thanks & Regards
> > Mahesh Raju Somalaraju
> > Github(id: maheshrajus)
> >
>