import ballerina/http;endpoint http:Listener sampleEP {
port:9090
};@http:ServiceConfig
service<http:Service> sample bind sampleEP { @http:ResourceConfig {
methods:["GET"],
path:"/path/{foo}"
}
params (endpoint client, http:Request req, string foo) {
var params = req.getQueryParams();
var bar = <string> params.bar;
map pathMParams = req.getMatrixParams("/sample/path");
var a = <string> pathMParams.a;
var b = <string> pathMParams.b;
string pathMatrixStr = string `a={{a}}, b={{b}}`;
map fooMParams = req.getMatrixParams("/sample/path/" + foo);
var x = <string> fooMParams.x;
var y = <string> fooMParams.y;
string fooMatrixStr = string `x={{x}}, y={{y}}`;
json matrixJson = {"path":pathMatrixStr, "foo":fooMatrixStr};
json responseJson = {"pathParam":foo, "queryParam":bar, "matrix":matrixJson};
http:Response res = new;
res.setJsonPayload(responseJson);
_ = client -> respond(res);
}
}
Query/Path/Matrix ParamBallerina support extracting values PathParam, QueryParam and MatrixParam. |
|
import ballerina/http;
|
|
endpoint http:Listener sampleEP {
port:9090
};
|
|
@http:ServiceConfig
service<http:Service> sample bind sampleEP {
|
|
@http:ResourceConfig {
methods:["GET"],
path:"/path/{foo}"
}
|
|
params (endpoint client, http:Request req, string foo) {
|
PathParam and QueryParam extract values from the request URI. |
var params = req.getQueryParams();
var bar = <string> params.bar;
|
Get QueryParam. |
map pathMParams = req.getMatrixParams("/sample/path");
var a = <string> pathMParams.a;
var b = <string> pathMParams.b;
string pathMatrixStr = string `a={{a}}, b={{b}}`;
map fooMParams = req.getMatrixParams("/sample/path/" + foo);
var x = <string> fooMParams.x;
var y = <string> fooMParams.y;
string fooMatrixStr = string `x={{x}}, y={{y}}`;
json matrixJson = {"path":pathMatrixStr, "foo":fooMatrixStr};
|
Get Matrix params |
json responseJson = {"pathParam":foo, "queryParam":bar, "matrix":matrixJson};
http:Response res = new;
|
Create json payload with the extracted values. |
res.setJsonPayload(responseJson);
|
A util method to set the json payload to the response message. |
_ = client -> respond(res);
}
}
|
Send a response to the client. |
$ ballerina run query-path-matrix-param.bal
ballerina: initiating service(s) in '.../query-path-and-matrix-param.bal'
ballerina: started HTTP/WS server connector 0.0.0.0:9090
|
|
$ curl "http://localhost:9090/sample/path;a=4;b=5/value1;x=10;y=15?bar=value2"
{
"pathParam": "value1",
"queryParam": "value2",
"matrix": {
"path": "a=4, b=5",
"foo": "x=10, y=15"
}
}
|
|