On Nov 29, 2012, at 11:26 AM, Pascal Robert wrote:

> 
> Le 2012-11-29 à 11:08, Roger Perryman <[email protected]> a écrit :
> 
>> 
>> On Nov 28, 2012, at 6:34 PM, Pascal Robert wrote:
>> 
>>> 
>>> Le 2012-11-28 à 17:11, Roger Perryman <[email protected]> a écrit :
>>> 
>>>> Thanks Michael. I've looked at it but I'll take a closer look at those 
>>>> classes. I assume I need to focus on @PathParam. While we're on the topic, 
>>>> what is the preferred way to code REST? Should I be using Annotations? Or 
>>>> does it depend on what the controller is doing?
>>> 
>>> I never used the annotations. The only time I would use them is if I have 
>>> to register like 100 controllers, just to not have to do it in Application.
>> 
>> If you are not using the @PathParam annotation, then how do you specify the 
>> parameters for the method?
> 
> By parameters, you mean something like ?key=value ? Like Mike said, call 
> stringFormValueForKey 

Yes. But I was also confusing myself between the parameters in the URL 
(key=value) and the method signature in the action methods since some of the 
examples seemed to suggest that methods received parameters instead of fetching 
them use routeObjectForKey.

> http://slideshare.net/wocommunity/er-rest-thebasics

Broken Link

> Slides 25 and 26
> 
> or 
> 
> http://slideshare.net/wocommunity/er-rest-designinggoodapi
> 
> Slides 15 and 16
> 
>> I assume you would use routeObjectForKey to access them. Does this mean 
>> there is no formal method signature? This would be similar to accessing 
>> parameters from a DirectAction call.
>> 
>>>> 
>>>> Roger
>>>> 
>>>> On Nov 28, 2012, at 3:19 PM, Michael Hast wrote:
>>>> 
>>>>> Hi Roger:
>>>>> 
>>>>> Take a look at the ERRestRouteExample application from Wonder. It helped 
>>>>> me understand how all that Rest stuff works in Wonder. It has some nice 
>>>>> inline comments. I would take a look at Application.java, 
>>>>> CarController.java and CompanyController.java. Both the CarController and 
>>>>> CompanyController have a showAction that uses a parameter.
>>>>> 
>>>>> Michael
>>>>> 
>>>>> On 11/28/2012 9:46 AM, Roger Perryman wrote:
>>>>>> 
>>>>>> On Nov 28, 2012, at 11:07 AM, Pascal Robert wrote:
>>>>>> 
>>>>>>> 
>>>>>>> Le 2012-11-28 à 10:40, Roger Perryman <[email protected]
>>>>>>> <mailto:[email protected]>> a écrit :
>>>>>>> 
>>>>>>>> Hi All!
>>>>>>>> 
>>>>>>>> I am still getting my feet wet with ERRest. Does anyone have an
>>>>>>>> example of a REST call to a custom method on an EO that is not a
>>>>>>>> model property and that takes parameters? All of the examples that I
>>>>>>>> have found use model properties and just "automagically" work. The
>>>>>>>> framework extracts the parameters and updates modeled properties. The
>>>>>>>> only example of a non-model property was derivedCurrentTime but it
>>>>>>>> doesn't use any parameters.
>>>>>>> 
>>>>>>> If the custom method is part of the EO class, you just need to add a
>>>>>>> ERXKey and add it to the keys for the response or request.
>>>>>> 
>>>>>> If I understand you, you are saying to add these to my custom EO class:
>>>>>> publicstaticfinalString LIST_PRACTICES_KEY= "listPractices";
>>>>>> public static final ERXKey<com.xeotech.resttest.datamodel.Practice>
>>>>>> LIST_PRACTICES = new
>>>>>> ERXKey<com.xeotech.resttest.datamodel.Practice>(LIST_PRACTICES_KEY);
>>>>>> 
>>>>>> I still don't see how to retrieve the parameters to pass to this method.
>>>>>> Also, based on a comment below, I assumed this method would live in the
>>>>>> controller, not the EO.
>>>>>> 
>>>>>>>> For example, given an address (or latitude / longitude coordinates)
>>>>>>>> and a distance, find all Practices within the specified distance from
>>>>>>>> the address. I'm unclear on how to extract the parameters and use
>>>>>>>> them in a custom method.
>>>>>>>> 
>>>>>>>> Another example: I need to fetch all Practices that a Physician is
>>>>>>>> associated with. I can get the list of Practices and I can get the
>>>>>>>> list of Physicians. What is not clear is how to retrieve the
>>>>>>>> Practices for the Physician. There is a relationship defined between
>>>>>>>> Physicians and Practices. I'm sure it will end up requiring me to
>>>>>>>> tweak my route setup.
>>>>>>>> 
>>>>>>>> This is from the ERRestRouteExample.
>>>>>>>> 
>>>>>>>> routeRequestHandler.addRoute(new ERXRoute(Person.ENTITY_NAME,
>>>>>>>> "/Person/{person:Person}", ERXRoute.Method.Get,
>>>>>>>> PersonController.class, "show"));
>>>>>>>> 
>>>>>>>> Would I change it to
>>>>>>>> 
>>>>>>>> routeRequestHandler.addRoute(new ERXRoute(Physician.ENTITY_NAME,
>>>>>>>> "/Physician/{physician:Physician}/{practices:Practice}",
>>>>>>>> ERXRoute.Method.Get, PhysicianController.class, "show"));
>>>>>>>> 
>>>>>>>> It doesn't seem to work. Also, is "show" the proper choice? This is
>>>>>>>> being sent to a client as data for a list and not displayed directly.
>>>>>>> 
>>>>>>> "show" is ok, as long as you have a "show" or "showAction" in
>>>>>>> PhysicianController. But for naming purposes, if you want to get a
>>>>>>> list of practices for a physician, I would call the method
>>>>>>> "listPractices".
>>>>>> 
>>>>>> So in the example above, practices is the name of a method inside my
>>>>>> controller, not a relationship or attribute defined in the model? I
>>>>>> can't find it now, but I seem to recall reading somewhere that if the
>>>>>> framework cannot find a method, it check other places. Would the method
>>>>>> without the final argument be more appropriate? And since I don't need
>>>>>> to specify the Practice, how do I specify no parameters?
>>>>>> 
>>>>>> routeRequestHandler.addRoute(new ERXRoute(Physician.ENTITY_NAME,
>>>>>> "/Physician/{physician:Physician}/{listPractices:null}",
>>>>>> ERXRoute.Method.Get, PhysicianController.class));
>>>>>> 
>>>>>>>> Is it OK to use addDefaultRoutes and also define additional routes?
>>>>>>>> Or do I need to manually add all the routes if I need to customize any?
>>>>>>> 
>>>>>>> Yes it is ok.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>> Webobjects-dev mailing list      ([email protected])
>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/mhast%40desertsky.com
>>>>>> 
>>>>>> This email sent to [email protected]
>>>>>> 
>>>>> 
>>>>> -- 
>>>>> Tel: (602) 279-4600 ext: 635
>>>>> Desert Sky Software: www.desertsky.com
>>>>> Specializing in the Development and Hosting of
>>>>> e-Business Applications.
>>>>> _______________________________________________
>>>>> Do not post admin requests to the list. They will be ignored.
>>>>> Webobjects-dev mailing list      ([email protected])
>>>>> Help/Unsubscribe/Update your Subscription:
>>>>> https://lists.apple.com/mailman/options/webobjects-dev/roger%40xeotech.com
>>>>> 
>>>>> This email sent to [email protected]
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Webobjects-dev mailing list      ([email protected])
>>>> Help/Unsubscribe/Update your Subscription:
>>>> https://lists.apple.com/mailman/options/webobjects-dev/probert%40macti.ca
>>>> 
>>>> This email sent to [email protected]
>>> 
>>> 
>> 
>> 
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/probert%40macti.ca
>> 
>> This email sent to [email protected]
> 
> 


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to