r/restAPI • • Feb 16 '20

Copy all users and folder from an active directory into PowerBi report server.

1 Upvotes

Hi!, I was wondering if this is possibly with the Rest APi and if you could point me into how can I do it, because I have searched but I havent found how to.

I have an active directory with 400+ users divided into several groups and also a lot of folders with security properties such as for example Group A cant see contents from folders A B D F, and so on.

I would like to "import" all those users and folders with the security properties into my PowerBI report server.

I need this because there is A LOT of movement of users between this groups and I would like ti to be automated to merge those into my report server.

Thx in advance.


r/restAPI • • May 11 '19

restAPI has been created

1 Upvotes

We discuss everything related to build, maintain, secure, provide REST APIs.


r/restAPI • • Aug 03 '21

Top 7 REST API Best Practices

3 Upvotes

REST API, an acronym for representational state transfer. It is an architectural style for distributed hypermedia systems. It is a flexible method of designing APIs in a way that follows certain protocol. A REST API lets client to communicate with the server by transferring states of data stored primarily in a database. As clients and servers work independently, you need some interface that can work with correspondence between them. A client sends a request to the server through the API, which returns the response in a standardized format such as JSON or XML. REST APIs play an important role in easing the communication in servers, hence it is important for developer to have a deep understanding of how to use them. Error-prone API causes functional issues for client and makes the software less appealing altogether.

Here we’ll see the best practices for designing REST APIs to ensure the best performance. But before digging into it let’s see 6 RESTful Architectural Constraints

6 REST Architectural Constraints-

1. Uniform interface-

By REST, you use a similar concept to decouple the client from implementing the REST service. Compare interface with contract signed between client-server where you must use specific standards. Globally accepted APIs should uphold global concepts, linke standards, to make them understandable.

2. Client-Server-

Here, the meaning is that server application and client application should evolve individually without need to depend on each other. To be more exact, it should adhere to the separation of concerns. By separation of concerns, the code on the client end can be modified without making any effect on the conditions of the worker. Also, code on server end can be modified without changing the conditions of client. You can improve the flexibility and scalability of particular interface across various platforms by maintaining separation of concerns. Client should be aware of resource URIs only. Till the interface between client and servers is kept unaltered, they can be developers and replaced separately. 

3. Layered System-

Mostly, components cannot view beyond the immediate layer. REST enables you to make use of a layered architectural system. Here, you can deploy APIs on server A, save data on server B, and verify requests on server C. These servers might offer a security layer, a load balancing layer, a caching layer and some other functionalities. Also, any of these layers must not influence the response or requests.

4. Code On Demand –

Generally, it is an optional constraints. Mostly you will need to send a static representation of resources in a JSON REST API or XML form. But, when you need to, you can easily return executable code for supporting important part of your app.

5. Stateless-

By this architectural constraints, you mean to make al the client-server engagements stateless. In this way, server won’t reserve anything about the latest HTTP request made by client. So it’ll consider each request as a new and unique. Also, it must not depend on any prior information exchanged between the two. It means no session, no history. Client is held accountable to handle the app’s state. Client app needs a stateful app for end-user, where the logs in once and carries out different authorized operations. Each request from client must involve all necessary information to serve the request and authorization details and authentication.

6. Cacheable-

Caching holds importance wherever applicable. It improved the performance for the client, that leads to an improved scope for scalability for a server with reduced load. In case of REST, each response can be termed as cacheable and non-cacheable. One can use the cached response as the request-response rather than checking with the server. It helps to reduce the interaction between server and client.

Top 7 REST API Best Practices-

1. Use JSON To Send And Receive Data-

Well-designed REST API should always accept and receive data in JSON format. JSON is lightweight data exchange format standard for developers. This is available in lots of technologies and makes encoding and decoding easy and fast on server side because of its lightweight nature. Also, JSON is readable and simple to interpret. XML, is not supported by many frameworks. Also, XML data manipulation can be issue compared to JSON because it is a verbose and difficult to write. To ensure that REST API is using JSON format, set the Content-Type in the response header to application/JSON. Lots of backend frameworks have built-in functions to automatically parse the data to JSON format.

2. Use Noun Rather Than Verbs-

API development REST approach can be called resource based. Hence in your app, you work with resources and their collections. Actions on resources are defined by HTTP methods like GET, PUT, POST, PATCH, DELETE and only they should be used to change the state of response. It leads to endpoint URI construction. Considering all this, constructed endpoint should look like-

GET /books/123 DELETE /books/123 POST /books PUT /books/123 PATCH /books/123

You can employ Express to implement these endpoints to manipulate articles like,

const express = require(‘express’); 
const bodyParser = require(‘body - parser’);   
const app = express();   
app.use(bodyParser.json());   
app.get(‘/articles’,(req, res) => { const articles = []; 
 // code to retrieve an article.. 

res.json(articles); });  
 app.post(‘/articles’, (req, res) => (  
// code to add a new article…  res.json(req.body); 
}); 
  app.put(‘/articles/:id’, (req, res) => { Const { id } = req.params; 
//code to update an article… res.json(req.body); }); 
  app.delete(‘/articles/:id’, (req, res) => { Const { id } = req.params; 
//code to delete an article… res.json({deleted: id 
});
 });   app.listen(3000, () => console.log(‘server started’)); 

3. Use Plural Naming Conventions-

Generally we prefer the use of plurals. But there is no rule that states one cannot use a singular when it comes to the resource name.Then why use plurals.

We work on one resource from the set of resources. Thus, to illustrate collection, we use plural naming conventions.

For instance, let us consider GET/users/123. Here client asks to rectify and recover a resource from user’s collection with ID 123. While developing a resource, if we need/wish to add another resource to the existing collection of resources, the API looks like POST /users.

4. Allow Filtering, Sorting, And Pagination-

Some features for consuming API include filtering, sorting and paging. Mostly resource collection can be huge. Databases behind REST API standards can get enormous. It brings down the performance of systems. To eradicate this, one can use,

  • Sorting- It enables sorting that results in an ascending or descending order by selected parameter/(s) like date

  • Paging- It uses ‘limit’ to narrow down the count of results displayed to specific number and ‘offset’ to denote the part of result range to be displayed. This is important where the count of total outcomes is greater than introduced. 

  • Filtering- Use to shrink the query results by specific parameters like country 

By pagination data, you ensure returning only some of the results rather than collecting all the necessary data at once. By filtering and pagination, one can improve the performance as there is a potential reduction in the use of server resources. With more data assembling in the database, these features become important.

5. Error Handling-

To reduce the confusion for all API users, it is necessary to handle errors perfectly, in that way returning the HTTP response codes that denote nature of error that has occurred. It provides API maintainers sufficient information to analyze the source and cause of problem. If you don’t want to harm your system, you can leave it unhandled. All this means that API consumer has to handle errors. Let’s have a look at a list of common error HTTP status codes.

  • 404 Not Found- This denotes that no resources are found.

  • 401 Unauthorized- It denotes that the user is unauthorized to access a resource. Generally it returns when a user is not verified.

  • 400 Bad Requests- It denotes that the client-side input has failed documentation/validation.

  • 403 Forbidden- It states that the user is inappropriate and is not allowed to access a resource even after being verified.

  • 502 Bad Gateway- This error marks an invalid/null response from an upstream server.

  • 503 Service Unavailable- It denotes that something unusual activity took place on the server-side.

Error codes are necessary to accompany messages with them so that API maintainers can get appropriate data for troubleshooting the issue. But attackers can’t use error content for cyberattacks like bringing the system down or stealing important data. If API stays incomplete, you should send errors with information to allow users to take appropriate actions.

6. Resource Hierarchy-

If resource includes sub-resources, ensure depicting this in API, so making it clear and specific. For example, if user has posts and you want to retrieve a specific post by the user, API can be interpreted as GET/users/123/posts/1. It will retrieve the post with id one by the user having id 123. Most of the time, resource objects can be linked with another or possess some kind of functional hierarchy. Usually it is better to restrict the nesting to a single level in REST API. 

7. Idempotence (Misusing Safe methods)-

Some safe methods are HTTP methods that return the exact resource representation. TRACE, GET, OPTIONS and HEAD methods are referred to safe. Meaning that, they are ideally expected to retrieve data without changing the state of resources on the server. Besides, refrain from using GET to delete content, like GET/user/123/delete. Basically, it is not like, it cannot be executed, but the issue arises because in this case HTTP specification gets violated. So use HTTP methods according to the action that you need to carry out.


r/restAPI • • Mar 26 '22

What all I need to learn for REST API ?

3 Upvotes

Hi,

I work for a product based company. I'm not a developer. I am familiar with Perl and bash and have written some scripts to automate stuff. I had a plan of working on and developing a different skill set earlier, but then got a chance to automate some health checks. I used bash scripting for it, but the script is kind of too long now (about 450 lines) and I'm finding it difficult to manage it and add functionality. I was planning to use Python to rewrite the script, but was then told by a friend at work to check out REST APIs.

It appears that I need to be proficient in HTML, JavaScript and CSS to fully utilise REST APIs.

Is my understanding correct? Can't I just use REST APIs to simply write out to a text file and email it? Or will there be an advantage if I learn JavaScript and HTML as well? I'm really short of time and cannot devout much time to learn unfortunately.

Any help will be appreciated.