why there is no endpoint type? - wso2

I design an api as the official context,when I imlement the managed api ,there is no endpoint type as the official context. why ? like the following image

Related

Secured spring request handler with Apikey and user roles using spring lemon

Can I be enriched with some code snippets for securing certain request handlers with user roles and apikey using spring lemon please.
How to use API key to authenticate is actually a different question from how to have role based authorizations, because whether you use API key or username/password for authentication, the authorization pattern is going to be the same. For authorization, Spring Lemon uses service method level authorization. Look at the use of #PreAuthorize and #UserEditPermission in LemonService as examples.
For creating and using API key, have a look at the API documentation and let me know if you have any specific questions. BTW, the getting started video tutorial showcases creating the API key.

providing dummy apis in wso2 api manager

Is there a way I can create some dummy APIs with dummy response in WSO2 API Manager? Our API implementation is not yet ready.Till its ready , can we create an API and give some sample json as response?
Best thing would be using the API manager to create API using prototype option.
Create API
Add entries for design screen
On the implementation screen choose - Prototyped API
Choose Implementation Method as inline for JSON (it will not work for
SOAP)
in Resource section click on any of the method types lets say Get
add the java script to mock the json data
/* mc.setProperty('CONTENT_TYPE', 'application/json');
enter code heremc.setPayloadJSON('{ "data" : "sample JSON"}');/
/ Uncomment the above comment block to send a sample response.*/
Publish it.
Hope this helps
Yes, you can create prototype API. please let me know if this help.
Refer following document Deploy and Test as a Prototype
If your servers has internet access, you can use http://www.mocky.io/ to mock your response. When you are creating an API in WSO2 API Manager provide the url of the mocky.io as the endpoint.

How to have multiple endpoints for one API in WSO2 API Manager?

Can I add multiple endpoints to 1 API in WSO2 Api Manager?
As far as I know I have to create a context and a version. The background is that I just want to make a request like https://api.manager.com/rest/1.0/userList or https://api.manager.com/rest/1.0/tasks.
The userList REST-Controller is implemented on backend A and tasks REST-Controller is implemented in backend B. (A and B are separate web applications)
As far as I know I have to create in my API Manager two APIs with different context values.
The API Manager application would simply subscribe both APIs.
But this would mean that I have to change my requests on the javascript side. This is in my opinion not good because I dont want my javascript application to care about the context. I want that the API Manager delegates to the correct backend automatically. Is this possible? What is best practise?
You can have multiple endpoints per API using Dynamic Endpoint Feature. When creating the API you need to set the Endpoint Type as "Dynamic Endpoint" and upload a mediation in-sequence that sets the "To" header. Within the sequence you can specify your logic to route to the correct endpoint (setting the correct "To" header) according to the request path. Please read [1] for more information.
[1] http://blog.lakmali.com/2016/08/dynamic-endpoints-in-wso2-api-manager.html

WSO2 API Manager & Web Service composition

Here's the scenario,
WS_A and WS_B are Web Services published in different endpoints.
WS_A receives personId, makes some processing, logs some data, and returns the name and the lastname of the Person with personId.
WS_B receives two Strings name and lastname and saves name+lastname in a database, then returns Ok/Error.
I need to publish an API API_Composition, using WSO2 API Manager, that will call WS_A, and send the result to WS_B, then return the result of WS_B.
Keep in mind that i can't make a new WS_C that has the behaviour of WS_A+WS_B, because i can't access the whole code of any of them.
Is there a way of doing this using only WSO2 API Manager?
Are there any other API Management products that can accomplish this requirement?
Regards
Yes, you can do this with mediator sequence. I have not found a specific tutorial for your scenario, but here's a blog post that has a demo on using mediator sequences and links to detailed documentation.
(Note: the demo and blog post are for WSO2 API Cloud - the hosted version of WSO2 API Manager. But it all works the same for API Manager - it is the same technology.)

Interaction with the AWS API?

I've gotten the necessary access key/signature from my client and I can interact with the API through the Ruby SDK right now. Thing is, the Ruby SDK doesn't have any kind of high-level API methods to request a spot instance. So, I need to do this manually via raw REST API requests.
Basically, the authentication information that I am using is correct (as it works via the Ruby SDK), but I can't get raw requests to work... I either get back the spot request wizard webpage as the response, or an error: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
Here's the URL I'm using:
https://ec2.amazonaws.com/?Action=RequestSpotInstances
&SpotPrice.1=0.05
&AvailabilityZoneGroup.1=us-east-1c
&LaunchSpecification.ImageId.1=THE_AMI_ID
&LaunchSpecification.KeyName.1=THE_KEYPAIR
&LaunchSpecification.InstanceType.1=m1.medium
&AWSAccessKeyId=THE_ACCESS_KEY
&Signature=THE_ACCESS_SIGNATURE
&Version=>2013-10-01
&Expires=>THE_EXPIRATION_TIME_36000_SECONDS_LATER_THAN_NOW
&SignatureVersion=2
&SignatureMethod=HmacSHA256
Any ideas on why this won't work? I've tried exploring the Ruby SDK code to see how they are doing it, but it's so complex, I can't figure out where this action actually takes place. Thanks!
How do you calculate signature? First at all check that you use correct signing process version. AWS api actually supports versions v2 and v4. Some aws resources supports both versions, some just v2 or v4. Base on this I would recommend to do following:
Check what version of the signing did you implement. More on versions:
http://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html
Check is your implementation match with algorithm described here: http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html