рдореБрдЭреЗ typescript/angular2
рдХреЛрдбрдЬреЗрди рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рд╣реИ, рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдЕрдЬреАрдм рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:
/**
* Add user
*
* <strong i="8">@param</strong> user username
* <strong i="9">@param</strong> passwd passwd
*/
public create(user: string, passwd: string, extraHttpRequestParams?: any): Observable<{}> {
return this.createWithHttpInfo(user, passwd, extraHttpRequestParams)
.map((response: Response) => {
if (response.status === 204) { <<<<<<<<<<<<<<<<<
return undefined;
} else {
return response.json();
}
});
}
/**
* User exists
*
* <strong i="10">@param</strong> user username
*/
public exists(user: string, extraHttpRequestParams?: any): Observable<boolean> {
return this.existsWithHttpInfo(user, extraHttpRequestParams)
.map((response: Response) => {
if (response.status === 204) { <<<<<<<<<<<<<<<<<<<<<
return undefined;
} else {
return response.json();
}
});
}
рдХреЛрдбрдЬрди рдХреЗрд╡рд▓ response.status === 204
рдЬрд╛рдВрдЪ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдЕрдиреНрдп рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдореЗрд░реА рд╕реНрд╡реИрдЧрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
<strong i="16">@PUT</strong>
@ApiOperation(value = "Add user")
@ApiResponses(value = {
@ApiResponse(code = 400, message = "Specified 'username' already exists on Living Commty."),
@ApiResponse(code = 401, message = "Specified 'username' has no a valid mail form."),
@ApiResponse(code = 402, message = "Specified 'passwd' is too short.")
})
public abstract Response create(...
<strong i="17">@GET</strong>
@ApiOperation(value = "User exists", response = Boolean.class)
@ApiResponses(value = {
@ApiResponse(code = 400, message = "Invalid user information specified")
})
public abstract Response exists(
2.2.3-рд╕реНрдиреИрдкрд╢реЙрдЯ
swagger: '2.0'
info:
description: desc
version: 1.0.2
title: Living API
termsOfService: 'http://swagger.io/terms/'
contact:
name: [email protected]
license:
name: Apache 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
host: localhost
basePath: /commty/cmng
tags:
- name: users
schemes:
- http
paths:
/users:
get:
tags:
- users
summary: User exists
description: ''
operationId: exists
produces:
- application/json
parameters:
- name: user
in: header
description: username
required: true
type: string
responses:
'200':
description: successful operation
schema:
type: boolean
'400':
description: Invalid user information specified
put:
tags:
- users
summary: Add user
description: ''
operationId: create
produces:
- application/json
parameters:
- name: user
in: header
description: username
required: true
type: string
- name: passwd
in: header
description: passwd
required: true
type: string
responses:
'400':
description: Invalid user information specified
рдЬрд╛рд╡рд╛ рдЬрд╛рд░ рдЙрддреНрдкрдиреНрди рдореИрдВ "\ рдЕрдХрдбрд╝-codegen-CLI \ рд▓рдХреНрд╖реНрдп \ рдЕрдХрдбрд╝-codegen-cli.jarред" http: // localhost : 8082 / commty / cmng / swagger.json -l рдЯрд╛рдЗрдкрдкреНрд░рддрд┐-angular2 -v
@jeusdi HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб 204 рдХрд╛ рдЕрд░реНрде рд╣реИ "рдХреЛрдИ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ" (рд╕рдВрджрд░реНрдн: https://httpstatuses.com/204), рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ undefined
рдХреНрдпреЛрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
@ wing328 рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рдЖрд╕рдкрд╛рд╕ рдерд╛: рдХреЛрдбрдЬрди @ApiResponses
рдПрдиреЛрдЯреЗрд╢рди рд╕рд╛рдордЧреНрд░реА рд▓реЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдзреНрдпрд╛рди рдХреНрдпреЛрдВ рд░рдЦрддрд╛ рд╣реИ:
@ApiResponses (рдорд╛рди = {
@ApiResponse (рдХреЛрдб = 400, рд╕рдВрджреЗрд╢ = "рдирд┐рд░реНрджрд┐рд╖реНрдЯ 'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо' рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рд╡рд┐рдВрдЧ рдХрдореЗрдЯреА рдкрд░ рдореМрдЬреВрдж рд╣реИред"),
@ApiResponse (рдХреЛрдб = 401, рд╕рдВрджреЗрд╢ = "рдирд┐рд░реНрджрд┐рд╖реНрдЯ 'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо' рдХрд╛ рдХреЛрдИ рдорд╛рдиреНрдп рдореЗрд▓ рдлрд╝реЙрд░реНрдо рдирд╣реАрдВ рд╣реИред"),
@ApiResponse (рдХреЛрдб = 402, рд╕рдВрджреЗрд╢ = "рдирд┐рд░реНрджрд┐рд╖реНрдЯ 'рдкрд╛рд╕рд╡рд╛рд░реНрдб' рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред")
})
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, create
рдФрд░ exists
рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХреЗ рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛:
@Path(value = "/users")
@Produces({"application/json"})
@Api(value = "/users")
public interface IUserCommtyEndpoint {
<strong i="16">@PUT</strong>
@ApiOperation(value = "Add user")
@ApiResponses(value = {
@ApiResponse(code = 400, message = "Specified 'username' already exists on Living Commty."),
@ApiResponse(code = 401, message = "Specified 'username' has no a valid mail form."),
@ApiResponse(code = 402, message = "Specified 'passwd' is too short.")
})
public abstract Response create(
@HeaderParam("user")
@ApiParam(value = "username", required = true)
@NotNull(message = "user.username.notnull")
@Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="{user.username.email}")
String username,
@HeaderParam("passwd")
@ApiParam(value = "passwd", required = true)
@NotNull(message = "user.passwd.notnull")
@Size(min = 6, max = 20, message = "{username.passwd.size}")
String passwd
) throws UsernameAlreadyExistsCommtyException, RepositorySystemException;
<strong i="17">@GET</strong>
@ApiOperation(value = "User exists", response = Boolean.class)
@ApiResponses(value = {
@ApiResponse(code = 400, message = "Invalid user information specified")
})
public abstract Response exists(
@HeaderParam("user")
@ApiParam(value = "username", required = true)
@NotNull(message = "user.username.notnull")
@Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="{user.username.email}")
String username
);
}
рдпреЗ рдЕрдкрд╡рд╛рдж рд╣реИрдВ UsernameAlreadyExistsCommtyException
, RepositorySystemException
, javax.validation.ValidationException
ред рдЙрди рд╕рднреА рдХреЛ JAXRS рдореИрдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
<strong i="24">@Provider</strong>
public class CommtyExceptionMapper implements ExceptionMapper<UsernameAlreadyExistsCommtyException> {
<strong i="25">@Override</strong>
public Response toResponse(UsernameAlreadyExistsCommtyException exception) {
return Response
.status(Response.Status.BAD_REQUEST.getStatusCode())
.type(MediaType.APPLICATION_JSON)
.entity(ErrorMessage.create(exception.getCode(), exception.getMessage()))
.build();
}
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдмреЙрдбреА рдкрд░ рдПрдХ ErrorMessage {code, message}
рдПрдореНрдмреЗрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ typescript\angular2
рдХреЛрдб рдкрд░ рд╣реИрдВрдбрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ...
рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛?
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ status
рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ 401 рдХреЛ рдХрдм рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЗрд╕реЗ рд╢рд░реАрд░ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рдмрд╕ рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 204 рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреЗрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдЕрднреА рднреА рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрдЧрд╛ InlineBody200
рдХреЗ рдЕрд▓рд╛рд╡рд╛ InlineResponse200
ред InlineBody200
рд╕реНрдХреАрдорд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдФрд░ InlineResponse200
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реА рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рдХреЛрдгреАрдп Reponse
рдХреА рддрд░рд╣ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЗрд╕рдХрд╛ .json()
InlineBody200
рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдШ рд╣реИ:
type InlineResponse = InlineResponse200 | InlineResponse401 | etc
DefaultApi
рдореЗрдВ рдХреЙрд▓ рдПрдХ Observable<InlineResponse>
рд▓реМрдЯрд╛ рд╕рдХрддреА рд╣реИред
рдлрд╝рдВрдХреНрд╢рди рдПрдХ InlineResponse200 | InlineResponse401 | etc
рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреА рдЬреЛ рдХреЛрдгреАрдп 2 рдЖрдкреВрд░реНрддрд┐ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рд╣реИред