# The Request in Code (g.req)

> Read the request in your code with g.req of API Maker - its body, headers, params of the path, query params and the data of an event - with the same code in eight languages.

Source: https://docs.apimaker.dev/v4/examples/req/req.html

> **The code in every language**
>
> Each example is the inside of `main`, written in every [language](https://docs.apimaker.dev/v4/docs/languages/index.html) API Maker runs : pick yours in the tabs, and every page shows it from then on. The types a call takes (`GetAll`, `DeepItem`…) are those of `am` : `from am import GetAll` in Python, `use am::GetAll;` in Rust, `import am.GetAll;` in Java and Kotlin ; PHP and C# have them without an import, Go names them `am.GetAll`.

Custom APIs, hooks, events and schedulers read the request through `g.req`. Who calls is in `g.req.auth` : see [Who calls : g.req.auth](https://docs.apimaker.dev/v4/examples/req/auth/auth.html).

## Body

To get the value of request body, use `g.req.body`.

**TypeScript**

```typescript
const body = g.req.body;
```

**Python**

```python
body = g.req.body
```

**PHP**

```php
$body = $g->req->body;
```

**C#**

```csharp
var body = g.Req.Body;
```

**Go**

```go
body := g.Req.Body()
```

**Rust**

```rust
let body = g.req.body();
```

**Java**

```java
JsonObject body = g.req.getBody();
```

**Kotlin**

```kotlin
val body = g.req.body
```

## Headers

To get the value of requested headers, use `g.req.headers`.

**TypeScript**

```typescript
const headers = g.req.headers;
```

**Python**

```python
headers = g.req.headers
```

**PHP**

```php
$headers = $g->req->headers;
```

**C#**

```csharp
var headers = g.Req.Headers;
```

**Go**

```go
headers := g.Req.Headers()
```

**Rust**

```rust
let headers = g.req.headers();
```

**Java**

```java
JsonObject headers = g.req.getHeaders();
```

**Kotlin**

```kotlin
val headers = g.req.headers
```

The [tenant header](https://docs.apimaker.dev/v4/docs/apis-all/header/requestHeader.html#x-am-tenant-username) of a request of a tenant of a [multi-tenant](https://docs.apimaker.dev/v4/docs/features/multi-tenant.html) instance. `g.req.params.tenantUsername` holds the tenant too, also when the request named it in the path (`crm::acme`).

**TypeScript**

```typescript
const tenantUsername = g.req.headers['x-am-tenant-username']; // 'acme'
```

**Python**

```python
tenant_username = g.req.headers.get('x-am-tenant-username')  # 'acme'
```

**PHP**

```php
$tenantUsername = $g->req->headers['x-am-tenant-username']; // 'acme'
```

**C#**

```csharp
var tenantUsername = g.Req.Headers.GetString("x-am-tenant-username"); // "acme"
```

**Go**

```go
tenantUsername := g.Req.Headers().String("x-am-tenant-username") // "acme"
```

**Rust**

```rust
let tenant_username = g.req.headers()["x-am-tenant-username"].as_str(); // Some("acme")
```

**Java**

```java
String tenantUsername = g.req.getHeaders().getString("x-am-tenant-username"); // "acme"
```

**Kotlin**

```kotlin
val tenantUsername = g.req.headers.getString("x-am-tenant-username") // "acme"
```

## Params

To get the value of requested params, use `g.req.params`.

**TypeScript**

```typescript
const params = g.req.params;
```

**Python**

```python
params = g.req.params
```

**PHP**

```php
$params = $g->req->params;
```

**C#**

```csharp
var parameters = g.Req.Params;
```

**Go**

```go
params := g.Req.Params()
```

**Rust**

```rust
let params = g.req.params();
```

**Java**

```java
JsonObject params = g.req.getParams();
```

**Kotlin**

```kotlin
val params = g.req.params
```

The tenant of the request, for a [multi-tenant](https://docs.apimaker.dev/v4/docs/features/multi-tenant.html) instance: named with the [x-am-tenant-username](https://docs.apimaker.dev/v4/docs/apis-all/header/requestHeader.html#x-am-tenant-username) header, or in the path of an API of the instance (`crm::acme`).

**TypeScript**

```typescript
const tenantUsername = g.req.params.tenantUsername; // 'acme', undefined without a tenant
```

**Python**

```python
tenant_username = g.req.params.tenantUsername  # 'acme', None without a tenant
```

**PHP**

```php
$tenantUsername = $g->req->params->tenantUsername; // 'acme', null without a tenant
```

**C#**

```csharp
var tenantUsername = g.Req.Params.GetString("tenantUsername"); // "acme", null without a tenant
```

**Go**

```go
tenantUsername := g.Req.Params().String("tenantUsername") // "acme", "" without a tenant
```

**Rust**

```rust
let tenant_username = g.req.params()["tenantUsername"].as_str(); // Some("acme"), None without a tenant
```

**Java**

```java
String tenantUsername = g.req.getParams().getString("tenantUsername"); // "acme", null without a tenant
```

**Kotlin**

```kotlin
val tenantUsername = g.req.params.getString("tenantUsername") // "acme", null without a tenant
```

## Query params

To get the value of requested query params, use `g.req.query`.

**TypeScript**

```typescript
const query = g.req.query;
```

**Python**

```python
query = g.req.query
```

**PHP**

```php
$query = $g->req->query;
```

**C#**

```csharp
var query = g.Req.Query;
```

**Go**

```go
query := g.Req.Query()
```

**Rust**

```rust
let query = g.req.query();
```

**Java**

```java
JsonObject query = g.req.getQuery();
```

**Kotlin**

```kotlin
val query = g.req.query
```

## Event data

To get the value of requested body data of the event, use `g.req.eventData`.

**TypeScript**

```typescript
const eventData = g.req.eventData;
```

**Python**

```python
event_data = g.req.event_data
```

**PHP**

```php
$eventData = $g->req->eventData;
```

**C#**

```csharp
var eventData = g.Req.EventData;
```

**Go**

```go
eventData := g.Req.EventData()
```

**Rust**

```rust
let event_data = g.req.event_data();
```

**Java**

```java
Object eventData = g.req.getEventData();
```

**Kotlin**

```kotlin
val eventData = g.req.eventData
```

## Related

- [The global object g](https://docs.apimaker.dev/v4/docs/pre-defined-terms/global-object-g.html) · [Custom APIs](https://docs.apimaker.dev/v4/docs/apis-all/custom-apis/user-created-custom-api.html) · [The answer : g.res](https://docs.apimaker.dev/v4/examples/res/res.html)
