#REST API

10 Followers · 627 Posts

Representational state transfer (REST) is a software architectural style that defines a set of constraints to be used for creating Web services. Web services that conform to the REST architectural style, called RESTful Web services (RWS), provide interoperability between computer systems on the Internet. RESTful Web services allow the requesting systems to access and manipulate textual representations of Web resources by using a uniform and predefined set of stateless operations. Other kinds of Web services, such as SOAP Web services, expose their own arbitrary sets of operations.

Learn More.

Announcement Michelle Spisak · Nov 27, 2017

Anxious about starting your first major REST application? Don't fret! Join Michael Smart, Senior Support Specialist at InterSystems, as he explores the principles of RESTful design and covers best practices for creating flexible, robust, and intuitive REST services.

Watch the webinar and access the sample code.

Still have questions? Ask them in the comments section below!

3
0 1064
Article Eduard Lebedyuk · Dec 7, 2017 3m read

In this article I'd like to discuss asynchronous REST and approaches to implementing it.

Why do we need asynchronous REST? Simply put - answering the request takes too much time. While most requests usually can be satisfied immediately, some can't. The reasons are varied:

  • You need to perform time-consuming calculations
  • Performing action actually takes time (for example container creation)
  • etc.

The solution to these problems is asynchronous REST. Asynchronous REST works by separating request and real response. Here's an example, let's consider the following simple async REST broker:

9
0 1891
Question Thomas Noitz · Dec 1, 2017

Hi guys,

is there a way to get the Call-Parameter in an UrlMap to call a method that lies in another class?

Example:

I have a generic class 'RestApi' where I define all my routes for the different Rest-Services I offer - in order to get the same URL for every service.

<Route Url="/checkUID/:uid/:supplierid/" Method="GET" Call="checkUID"/>

This way the checkUID-Method has to be in the class 'RestApi' where my routes are defined. If I dont want to have all methods implemented in the same generic class, is it possible to get the Call-Parameter to call for example the method 'checkUID' in the class 'U

4
0 758
Question Arun Kumar · Dec 1, 2017

Hi Guys,
Can you please guide me to get rid of this issue. Please find the image files with this post.

Please let me know, before we are developing an API what are all the setup/Configuration(Apache/web server) need to do in my machine. 

If any lead would be appreciated. 

I don't know, in XMLNamespace parameter which URL need to use.  

.

Thanks,

Arun Kumar Durairaj.

3
0 593
Question Tom Philippi · Nov 27, 2017

How do I set an URL when I post a httpRequest via SendFormArray of my Ensemble Business Operation. Here is my code: 

Class CareHome.RestApiClient Extends EnsLib.REST.Operation
{
Parameter INVOCATION = "Queue";
Method Login(pRequest As CareHome.Request.LoginRequest, Output pResponse As Ens.StringResponse)
{

set tURL = ..Adapter.URL_"login/login"


set httpRequest = ##class(%Net.HttpRequest).%New()
 set httpRequest.ContentType="application/json"
 do ..ObjectToJSONStream(pRequest,.jsonStream,"aeliw")
 set httpRequest.EntityBody = jsonStream
  
 set tSC = ..Adapter.SendFormData(.tHttpResponse,"POST",httpReques

1
0 948
Question Tom Philippi · Nov 23, 2017

I have an Ensemble installation and just build my first RestService (using %CSP.Rest that forwards them to my Business Service). This works nice and fine when I use postman to make REST calls over http (port 57772). However when I attempt to make a request using https over port 443 I receive the following error:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
    <head>
        <title>404 Not Found</title>
    </head>
    <body>
        <h1>Not Found</h1>
        <p>The requested URL /csp/healthshare/fcoffice/rest/ping was not found on this server.</p>
        <hr>
7
0 1002
Article Daniel Kutac · Nov 10, 2017 1m read

As many of you, our partners, are more widely using modern UI frameworks to create client front-end, you may have encountered a question, "So how do I secure my data when I just finished developing all new fancy browser based client experience?"

The answer is easy. Use a standard, proven OAuth2 and OpenID!

"OK, but how can I do it? I have never done it before."

No problem, just have a look here, if your client is Angular (not AngularJS) based, there is a demo project available for you to review and get inspired!

The demo presents a simple Angular (and typescript) application with user login and

1
0 1296
Question Alex Goncharov · Nov 6, 2017

Hello, evrybody, I'm writing one project using CSP("OnPreHTTP"), and also REST angular. At the beginning I wrote purely on csp, then I decided to use angular for the flexibility of the client part. Now I can not design logging, I created a table App.Log with properties

/// Type of eventProperty EventType As %String(MAXLEN = 10, VALUELIST = ",NONE,FATAL,ERROR,WARN,INFO,STAT,DEBUG,RAW") [ InitialExpression = "INFO" ];/// Name of class, where event happenedProperty ClassName As %String(MAXLEN = 256);/// Name of method, where event happenedProperty MethodName As %String(MAXLEN = 128);
3
0 689
Article Rubens Silva · Oct 13, 2017 2m read

Hello again and welcome to the next tutorial on this series: Part 4 - Sharing data across router methods.  Here we are going to learn how to share a object containing data that is available for read across every router methods.
You're required to complete at least the Part 1 before entering this one. Still, this is supposed to be a really short tutorial, since there isn't much to be said about data sharing.

  1. Core concepts
    • Getting started
    • Creating a simple request
    • Query parameters
    • Aliasing query parameters
    • Changing output format
    • Rest query parameters
    • Inferring object instances
    • Using literal notation
    • Seamle
0
0 568
Question José Pereira · Oct 10, 2017

Hi everyone! My company has a Zen ERP application with CSP delegated authentication. Now, we're developing a separated BI application, using Angular, which consumes DeepSee REST API services. Both applications access the same Caché database.

How to implement single sign-on strategy in order to allow an already authenticated ERP user to access DeepSee REST services? Has anyone already implemented something like that?

Thanks in advanced.

3
0 638
Article Rubens Silva · Sep 27, 2017 4m read

Hello again and welcome to the Part 3 - Using the SQL API!
If you have been wondering about how to use SQL along with Frontier, you came to the right place. That's because since Frontier wraps the common Caché SQL API within it's own, you need to use the API provided from it. But you don't need  to worry about its learning curve, because the Frontier SQL API is really simple.
If you arrived here without checking the Part 1, I'd recommend you doing so, because Part 1 covers the essential for getting started with Frontier routers.

  1. Core concepts
    • Getting started
    • Creating a simple request
    • Quer
0
0 1015
Question Yani Idoughi · Aug 1, 2017

Hi, 

I am a beginner on intersystems technologies ! and i want implements Oauth2 for our projects ( Angular 2 + Caché REST  Backend). 

i read the article that the link  is below : 

https://community.intersystems.com/post/cach%C3%A9-open-authorization-framework-oauth-20-implementation-part-1

But : i need to create  all servers ( Auth and Resource ) on Caché and dont' to use google server.

Also, i need   to be able to consume Oauth from my web services as caché REST application (whitout csp ui) .

An Idea  Please ?

Thank you

Yani

4
0 979
Article Rob Tweed · Apr 18, 2017 1m read

I've mentioned the QEWD project in this group before: it's a Node.js-based platform for web, Native and REST applications which tightly integrates with Cache.  It uses a somewhat different philosophy to the use of Node.js than the norm, and I've now published an article that explains this approach and the unique benefits that arise as a result.

It turns out that, integrated via QEWD, Cache is an ideal bed-fellow for Node.js.  QEWD makes the integration of Cache and Node.js exceptionally fast, simple and intuitive to use, but also extremely powerful.

Read the article here: 

https://robtweed.wordpr

4
0 620
Article Rubens Silva · Aug 9, 2017 9m read

Hello.
The idea of this post is to introduce Frontier: An abstraction layer that allows Rapid REST development.

REQUIREMENTS:

Why?

Have you ever found yourself dealing with repetitive tasks like mounting objects, serializing them and eventually handling multiple errors for multiple cases? Frontier can boost your development by making you focus on what really matters: your application.
 

Frontier is made to stop you from WRITE'ing by instead forcing your methods to return values.
It's designed to make you code clean, and you'll see the why pretty soon.

This is the Part 1, where you'll learn he basics about how to work with Frontier. That means at the end of this part you should be capable of 

creating GET requests without difficulties. Since this also serves as a way to introduce the framework, I'll be calling this part: Core concepts.

8
0 1789
Question Manoj K · Apr 1, 2017

Hi

I tried to access one server to another server in Cache Rest Service, I tried 

Parameter HandleCorsRequest = 1;

and

<Route Url="/data/:first/:second" Method="GET" Call="GetData" Cors="true"/>

But not working,

Can anyone tell me the solution??

Thanks in advance!!

5
1 1734
Question Ricky Beca · Jul 31, 2017

Hello,

I come from a programming background, but haven't touched ObjectScript before my current job, so please forgive my ignorance.

Within an Ensemble system, I need to post some information to a RESTful web service. I'm just trying to figure out how to create a method which takes a simple message and posts this off to a RESTful web service?

Thanks in advance for any help.

3
1 1965
Article Chris Stewart · Sep 8, 2017 3m read

a.k.a..  "The World of Widgets Returns!" or "Paternity leave damages Instructional Series momentum"

In our last lesson, we combined 2 separate classes to appear as the same property.  We now have the ability to Update our Widget catalog, but what if we want to Create a Widget?  Thankfully, we've already done 90% of what we need, just by implementing Edits

As we mentioned when creating the REST Services for PUT and POST, the only real difference between creating and updating a record is whether we are passing in an existing ID or creating a %New record.

0
0 1064
Article Nathan Ng · Sep 6, 2017 4m read

Preface

Before we begin, I'd like to mention that I am by no means an Ensemble expert, so take this with a grain of salt and please feel free to offer any suggestions for improvement. That being said, I have enjoyed working with Ensemble and wanted to share the approach I took to poll an external REST API for patient data in the hopes that it might help others with a similar goal.

If you get bored easily and just want to see some code, feel free to jump straight to the example on github. It uses dummy data (for obvious reasons) but the core principles should be the same.

The Goal

The goal of the

5
0 1744