API REST Flashcards

1
Q

What is curl?

A

It is a tool that gives you the possibility to interact remotely to other resources.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

How do you start using curl to make a get request?

A

1) Se inicicializa:

```

$resource=curl__init(‘https://zealous-tick-sandals.cyclic.app/elements/1’);

2) Se setean las opciones:

curl_setopt($resource,CURLOPT_RETURNTRANSFER,true);

3) Se ejecuta y gurada en una variable el resultado:

$result=curl_exec($resource);

4) Se cierra:

curl_close($resource);

~~~

Luego puedo usar el $result que tiene la data para lo que necesite.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qué es lo primero que hay que hacer cuando se trabaja con curl?

A

Inicializarlo y guardarlo en una variable:

$resource=curl_init($url);

Si es con get se le pasa la url si es con post no.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qué se hace después de inicializar curl para una get request?

A

Se setean las opciones:

curl_setopt($resource, CURLOPT_RETURNTRANSFER, true);

el $resource es la variable donde guarde la inicialización.

CURLOPT_RETURNTRANSFER: Nos permite almacenar la respuesta en la variable $data en lugar de mostrar el resultado en pantalla.

true para devolver el resultado de la transferencia como string del valor de curl_exec() en lugar de mostrarlo directamente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Cuál es el tercer paso al usar curl para una get request?

A

Se ejecuta y se guarda el resultado en una variable

$result=curl_exec($resource);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Cuál es el cuarto paso al usar curl para una get request?

A

Se cierra:

curl_close($resource);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

How do you do to get information about the request?

A

Before executing it you need to do:

$info=curl_getinfo($resource)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

How do you do to see the HTTP code from the response?

A

Before closing it and after the execution.

$code=curl_getinfo($resource, CURLINFO_CODE)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

How do you make a post request with curl?

A

1) $resource=curl_init();

2) $user=[ ‘name’=> ‘John Doe’,
‘username’=>’john’,
‘email’=>’john@example.com’
]

3) curl_setopt_array($resource, [
CURLOPT_URL=>$url,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_POST=>true,
CURLOPT_POSTFIELDS=>json_encode($user),
CURLOPT_HTTPHEADER=>[‘content-type: application/json’
]);

4) $result=curl_exec($resource);

5) curl_close($resource);

echo $result;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are the options you need to set in curl for a post request?

A

There are 5 options you need to set:

1) the URL,
2) the returntransfer
3) the type of request(post)
4) the body of the post (o post field)
5) the HTTP headers

Ex:

curl_setopt_array($resource, [ 

                    CURLOPT_URL=>$url,

                    CURLOPT_RETURNTRANSFER=>true,

                    CURLOPT_POST=>true,

            CURLOPT_POSTFIELDS=>json_encode($user),

                    CURLOPT_HTTPHEADER=>['content-type: application/json'

                     ]);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qué es CURLOPT_RETURNTRANSFER?

A

CURLOPT_RETURNTRANSFER: Nos permite almacenar la respuesta en la variable $data en lugar de mostrar el resultado en pantalla.

true para devolver el resultado de la transferencia como string del valor de curl_exec() en lugar de mostrarlo directamente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Cómo se hace una get request con file_get_content?

A
$url = 'https://zealous-tick-sandals.cyclic.app/elements/8';

$response = file_get_contents($url);

$element = json_decode($response, true);

echo '<pre>';
var_dump($element);
echo '</pre>';
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Qué es json_decode?

A

’ json_decode() ‘ es una function en PHP que convierte una cadena JSON en un objeto o array PHP.

La funcion toma como argumento una cadena JSON y opcionalmente un segundo argumento booleano que indica si se deasea convertir la cadena JSON en un objeto (‘false’) o en un array(‘true’).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Que quiere decir el true en

$element = json_decode($response, true);
A

Quiere decir que se quiere que php convierta el file $response que es de tipo JSON en un array de php.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Cómo se puede hacer un post request con file_get_content?

A
$url = 'https://jsonplaceholder.typicode.com/users';

$data = ['name'=>'John Doe', 'username'=>'joeD','email'=>'joedoe@example.com'];

$options = [
    'http'=>[
        'method'=>'POST',
        'header'=>'Content-Type:application/x-www-form-urlencoded',
        'content'=>http_build_query($data)
    ]
    ];

$context = stream_context_create($options);

$response = file_get_contents($url, false, $context);

var_dump($response);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Cuáles son las options que se deben setear para hacer una post request cuando se hace una post request con file_get_contents? como se setea el contexto.

A

Se debe especificar:

1) El método, que sería POST

2) El tipo de contenido que se pone en el header, como ‘application/x-www-form-urlencoded’

3) El contenido codificado. Para codificarlo se puede hacerlo con http_build_query()

Estas opciones se ponen en un array, como valor de un array asociativo con key de ‘http’.

Estas opciones se pasa an stream_context_create($options) que es quien las setea. y luego eso se le pasa a file_get_content();

Ejemplo:

$options = [
    'http'=>[
        'method'=>'POST',
        'header'=>'Content-Type:application/x-www-form-urlencoded',
        'content'=>http_build_query($data)
    ]
    ];  

$context=stream_context_create($options);

$response=file_get_content($url,false,$context);
17
Q

Qué es x-www-form-urlencoded?

A

Es un tipo de contenido que se utiliza en el encabezado HTTP para indicar que los datos enviados en la solicitud están en formato url.

Esta codificación implica convertir los caracteres especiales en una representación de escape y separar los pares clave valor con un signo de = y un signo de ampersand.

18
Q

Qué es http_build_query()?

A

‘http_build_query()’ es una función de PHP que convierte una matriz (array) asociativa o un objeto en una cadena de consulta para su uso en una url o en ina solicitud http.

Esta función es útil cuando se quiere construir una url dinámica con parámetros o cuando se quiere enviar una solicitud HTTP con datos codificados en formato url.

19
Q

Qué debo reemplazar en esta post request para que trabaje con json?

$url = 'https://jsonplaceholder.typicode.com/users';

$data = ['name'=>'John Doe', 'username'=>'joeD','email'=>'joedoe@example.com'];

$options = [
    'http'=>[
        'method'=>'POST',
        'header'=>'Content-Type:application/x-www-form-urlencoded',
        'content'=>http_build_query($data)
    ]
    ];

$context = stream_context_create($options);

$response = file_get_contents($url, false, $context);

var_dump($response);
A
<?php

$url = 'https://jsonplaceholder.typicode.com/users';

$data = ['name'=>'John Doe', 'username'=>'joeD','email'=>'joedoe@example.com'];

$options = [
    'http'=>[
        'method'=>'POST',
        'header'=>'Content-Type:application/json',
        'content'=>json_encode($data)
    ]
    ];

$context = stream_context_create($options);

$response = file_get_contents($url, false, $context);

var_dump($response);
?>
20
Q

Que tengo que cambiarle a la siguiente post request para que trabaje con codena de consulta de url?

<?php

$url = 'https://jsonplaceholder.typicode.com/users';

$data = ['name'=>'John Doe', 'username'=>'joeD','email'=>'joedoe@example.com'];

$options = [
    'http'=>[
        'method'=>'POST',
        'header'=>'Content-Type:application/json',
        'content'=>json_encode($data)
    ]
    ];

$context = stream_context_create($options);

$response = file_get_contents($url, false, $context);

var_dump($response);
?>
A
$url = 'https://jsonplaceholder.typicode.com/users';

$data = ['name'=>'John Doe', 'username'=>'joeD','email'=>'joedoe@example.com'];

$options = [
    'http'=>[
        'method'=>'POST',
        'header'=>'Content-Type:application/x-www-form-urlencoded',
        'content'=>http_build_query($data)
    ]
    ];

$context = stream_context_create($options);

$response = file_get_contents($url, false, $context);

var_dump($response);
21
Q

Qué es stream_context_create()?

A

Es una función de PHP que crea contexto de flujo para una operación de transmisión de flujos, como una solicitud HTTP o una lectura de archivo.

Un contexto de flujos permite personalizar la forma en que se realiza una operación de transmisión de flujos especificos, como las cabeceras de HTTP.

El contexto se establece con las opciones que puedo setear, como method, header y content.

Ejemplo de uso:

$url = 'https://jsonplaceholder.typicode.com/users';

$data = ['name'=>'John Doe', 'username'=>'joeD','email'=>'joedoe@example.com'];

$options = [
    'http'=>[
        'method'=>'POST',
        'header'=>'Content-Type:application/x-www-form-urlencoded',
        'content'=>http_build_query($data)
    ]
    ];

$context = stream_context_create($options);

$response = file_get_contents($url, false, $context);

var_dump($response);
22
Q

Por qué las opciones de contexto se ponen como valor de un array con clave http?

A

Las opciones de contexto se ponen como valor en un array con clave ‘http’ porque la clave http representa el esquema de transmisión de flujos que se esta utilizando.

La función stream_context_create() permite establecer opciones para diferentes esquemas de transmisión de flujos, no solo http, sino también FTP, SSL, entre otros.

Por eso hay que aclarar que es http.

23
Q

Qué argumentos toma file_get_contents() cuando se hace una post request?

A

file_get_content() toma dos argumentos principales:

1) La url a la que se le quiere hacer la solicitud POST.

2) $use_include_path es una bandera opcional que indica si se debe buscar el archivo en el camino de inclusión (include_path)

3) que tambien es opcional, representa el contexto de la transmisión de flujos que se utilizara para enviar la solicitud post. Este argumento se utiliza para establecer opciones adicionales para la solicitud, como las cabeceras http, los métodos de solicitud, el contenido de la solicitud, entre otros.