### Apache Airflow version

2.5.1

### What happened

When i made these patch requests to update description of the variable via axios

### 1) Trying to modify new value and description
```javascript

let payload ={ key : "example_variable", value : "new_value", description: "new_Description" }
axios.patch("https://localhost:8080/api/v1/variables/example_variable" , payload ,
{
    auth : {
        username : "username",
        password : "password"
    },
    headers: {
        "Content-Type" : "application/json",
     }
});
```

following response received and In the airflow , Existing Variable's ```Description``` is cleared and set to ```None```

```html 
response body : {
    "description" : "new_Description",
    "key": "example_variable",
    "value" : "new_value"
}
```

### 2) Trying to update Description with update_mask
```javascript

let payload ={ key : "example_variable", value : "value", description: "new_Description" }
axios.patch("https://localhost:8080/api/v1/variables/example_variable?update_mask=description" , payload ,
{
    auth : {
        username : "username",
        password : "password"
    },
    headers: {
        "Content-Type" : "application/json",
     }
});
```

following response received

```html 
response body : {
    "detail" : null,
    "status": 400,
    "detail" : "No field to update",
    "type" : "https://airflow.apache.org/docs/apache-airflow/2.5.0/stable-rest-api-ref.html#section/Errors/BadRequest"
}
```

### What you think should happen instead

The filed "description" is ignored both while setting the Variable (L113) and ```update_mask``` (L107-111).


https://github.com/apache/airflow/blob/1768872a0085ba423d0a34fe6cc4e1e109f3adeb/airflow/api_connexion/endpoints/variable_endpoint.py#L97-L115

Also in Variable setter its set to ```None``` if input doesn't contain description field
https://github.com/apache/airflow/blob/1768872a0085ba423d0a34fe6cc4e1e109f3adeb/airflow/models/variable.py#L156-L165

### How to reproduce

## PATCH in Airflow REST API

### API call
"https://localhost:8080/api/v1/variables/example_variable?update_mask=description"

### payload
{ key : "example_variable", value : "value", description: "new_Description" }

### headers
"Content-Type" : "application/json"

OR

### API call
"https://localhost:8080/api/v1/variables/example_variable

### payload
{ key : "example_variable", value : "new_value", description: "new_Description" }

### headers
"Content-Type" : "application/json"

### Operating System

Ubuntu 22.04.1 LTS

### Versions of Apache Airflow Providers

_No response_

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

_No response_

### Anything else

Possible Solution to update Description field can be like

https://github.com/apache/airflow/blob/1768872a0085ba423d0a34fe6cc4e1e109f3adeb/airflow/api_connexion/endpoints/connection_endpoint.py#L134-L145

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

response = self.client.delete(
            "/api/v1/variables/NONEXIST_VARIABLE_KEY", environ_overrides={"REMOTE_USER": "test"}
        )
        assert response.status_code == 404
    def test_should_raises_401_unauthenticated(self):
        Variable.set("delete_var1", 1)
        
        response = self.client.delete("/api/v1/variables/delete_var1")
        assert_401(response)
        
        response = self.client.get("/api/v1/variables/delete_var1", environ_overrides={"REMOTE_USER": "test"})
        assert response.status_code == 200
    def test_should_raise_403_forbidden(self):
        expected_value = '{"foo": 1}'
        Variable.set("TEST_VARIABLE_KEY", expected_value)
        response = self.client.get(
            "/api/v1/variables/TEST_VARIABLE_KEY", environ_overrides={"REMOTE_USER": "test_no_permissions"}
        )
        assert response.status_code == 403
class TestGetVariable(TestVariableEndpoint):