Re: [ERRest] - Manually generating rest URL
Re: [ERRest] - Manually generating rest URL
- Subject: Re: [ERRest] - Manually generating rest URL
- From: Dev WO via Webobjects-dev <email@hidden>
- Date: Thu, 16 Apr 2020 21:32:56 +0200
I actually did like ERRest, but directly in my DirectAction
public WOActionResults statusAsJsonAction() {
//assuming dict exists
ERXRestRequestNode restResponseNode = null;
ERXRouteResults results = null;
try {
ERXRestContext context = new ERXRestContext();
restResponseNode =
ERXRestRequestNode.requestNodeWithObjectAndFilter(dict,
ERXKeyFilter.filterWithAll(), context);
results = new ERXRouteResults(context(), context,
ERXRestFormat.json(), restResponseNode);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e);
}
return results;
I should get a better handling for the exceptions though;)
Xavier
> On 16 Apr 2020, at 21:22, Jesse Tayler <email@hidden> wrote:
>
> What I think you want is a DA to return JSON, perhaps like this:
>
>
> public WOResponse responseForPoint(DataPoint point) {
> ERXKeyFilter filter = DataPointController.showFilter();
> String json = ERXRestFormat.json().toString(point, filter);
> WOResponse aResponse = new WOResponse();
> aResponse.appendContentString(json);
> return aResponse;
> }
>
>
>
>> On Apr 16, 2020, at 3:03 PM, Dev WO <email@hidden> wrote:
>>
>> I cannot really say it is solved based on the subject of the thread, but
>> regarding what I was actually trying to do, it is solved.
>> I picked up just what was needed to generate the Json response in my
>> DirectAction class so I could keep what I was using the generate the url.
>>
>> Thanks anyway, it gave me some time to look at ERRest:)
>>
>> Xavier
>>
>>
>>
>>
>>> On 16 Apr 2020, at 20:31, Dev WO via Webobjects-dev
>>> <email@hidden> wrote:
>>>
>>> I was just looking at making a DirectAction to get a NSDict as a json
>>> output actually.
>>>
>>> Searching for that it looked like ERRest was the answer, but maybe I should
>>> just “borrow” the method that actually generate the son response and stick
>>> with the regular DirectAction…
>>>
>>> Xavier
>>>
>>>
>>>> On 16 Apr 2020, at 20:11, Jesse Tayler <email@hidden> wrote:
>>>>
>>>> I might be confused
>>>>
>>>> Not sure this is the right API for what you want since this API is for a
>>>> specific page or object ID?
>>>>
>>>> ra/Vote/2343.html
>>>>
>>>> or
>>>>
>>>> ra/User/jtayler.html
>>>>
>>>> Is what I might expect
>>>>
>>>> Those routes are HTML and either need default HTML or a static view page
>>>> for that entity that accepts an object to inspect.
>>>>
>>>> Are you looking to invoke a list page?
>>>>
>>>> This is a list with params and basically an apache rule redirects the URL
>>>> into the longer version and my app intercepts link URL requests and
>>>> exchanges links on production that are shorter.
>>>>
>>>> http://planaby.com/event/nearby.html?distance=30.0&lat=40.7450127906344&lon=-73.9771424224899
>>>>
>>>> or
>>>>
>>>> http://planaby.com/person/1.html
>>>>
>>>> Is just a simple ERRest route url translated by apache so it looks shorter
>>>> in production
>>>>
>>>> Maybe that helps
>>>>
>>>>
>>>>
>>>>
>>>>> On Apr 16, 2020, at 1:45 PM, Dev WO <email@hidden> wrote:
>>>>>
>>>>> Hi Jesse,
>>>>>
>>>>> Thanks for the pointer, that does look better, but I don’t understand 2
>>>>> things:
>>>>> The method I have is
>>>>> actionUrlForEntity(WOContext context, String entityName, Object entityID,
>>>>> String action, String format, NSDictionary<String, Object>
>>>>> queryParameters, boolean secure, boolean includeSessionID)
>>>>> I’m doing “ERXRouteUrlUtils.actionUrlForEntity(context(), "Status", null,
>>>>> null, null, restDict, false, false)"
>>>>>
>>>>> I’m expecting a url like
>>>>> ''/cgi-bin/WebObjects/CloudManager.woa/ra/Status?type=heat”
>>>>> but I get
>>>>> "/cgi-bin/WebObjects/CloudManager.woa/ra/statuses.html?type=heat”
>>>>> I don’t really get why I got “statuses.html” instead of “Status” (the
>>>>> capital S and the plural+.html).
>>>>>
>>>>> Looking at the source, it seems whatever I choose as “format”, I’ll get a
>>>>> “.something” appended, but the response is still ok if I do
>>>>> '/cgi-bin/WebObjects/CloudManager.woa/ra/Status.json?type=heat” so that’s
>>>>> not an issue.
>>>>>
>>>>> But the capital S and the plural do break my call, any idea about this?
>>>>>
>>>>> Thanks, hope everything is as good as it could be in NYC,
>>>>>
>>>>> Xavier
>>>>>
>>>>>
>>>>>> On 16 Apr 2020, at 18:49, Jesse Tayler <email@hidden> wrote:
>>>>>>
>>>>>>
>>>>>> If you want to generate an action URL, I think you’ll want this API
>>>>>>
>>>>>> String link = ERXRouteUrlUtils.actionUrlForEntity(context, entityName,
>>>>>> entityID, action, format, queryParameters, secure, includeSessionID);
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On Apr 16, 2020, at 12:42 PM, Dev WO via Webobjects-dev
>>>>>>> <email@hidden> wrote:
>>>>>>>
>>>>>>> Hi everyone,
>>>>>>>
>>>>>>> I’m currently trying a few things with ERRest.
>>>>>>> In a stateless component, I need to create some urls manually (they
>>>>>>> will be used inside a script element).
>>>>>>> When I was calling my DirectAction class, I was just doing this:
>>>>>>>
>>>>>>> context().generateRelativeURLs();
>>>>>>> NSMutableDictionary<String, String> dict = new
>>>>>>> NSMutableDictionary<String, String>();
>>>>>>> ...
>>>>>>> dict.put(key, value);
>>>>>>> ...
>>>>>>> String relativeUrl = context()._directActionURL(“myDirectAction", dict,
>>>>>>> false);
>>>>>>>
>>>>>>>
>>>>>>> But I wasn’t able to find out the equivalent _directActionURL() method
>>>>>>> to generate the Rest (with /ra) URL.
>>>>>>>
>>>>>>> How would you manually generate a relative URL for an ERRest request?
>>>>>>>
>>>>>>> Thanks a lot and stay safe,
>>>>>>>
>>>>>>> Xavier
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>> Webobjects-dev mailing list (email@hidden)
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>
>>>>>>> This email sent to email@hidden
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list (email@hidden)
>>> Help/Unsubscribe/Update your Subscription:
>>>
>>> This email sent to email@hidden
>>
>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden