Copilot Creates Issues includes codes snippets in its drafts [Public Preview] (#57733)
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: Creating issues
|
||||
shortTitle: Create issues
|
||||
intro: '{% data variables.copilot.copilot_chat_short %} can help you quickly create issues without filling out every field manually.'
|
||||
versions:
|
||||
feature: copilot
|
||||
complexity:
|
||||
- Simple
|
||||
octicon: copilot
|
||||
category:
|
||||
- Document code
|
||||
topics:
|
||||
- Copilot
|
||||
contentType: tutorials
|
||||
---
|
||||
|
||||
Creating issues manually can be time-consuming. {% data variables.copilot.copilot_chat_short %} lets you create issues from natural language, and automatically fills in the title, body, labels, and other metadata based on your prompt.
|
||||
|
||||
## Example scenario
|
||||
|
||||
You're working on an API service and need to add server-side validation to the `createUser` endpoint. Instead of drafting the issue manually, you use {% data variables.copilot.copilot_chat_short %} to generate a detailed issue description that includes an example implementation of the validation middleware.
|
||||
|
||||
The following snippet shows the current implementation of the `createUser` route, before validation is added:
|
||||
|
||||
```javascript
|
||||
// Route
|
||||
app.post('/users', validateCreateUser, (req, res) => {
|
||||
const { username, email } = req.body;
|
||||
// Simulate user creation
|
||||
res.status(201).json({ message: 'User created', user: { username, email } });
|
||||
});
|
||||
```
|
||||
|
||||
## Example prompt
|
||||
|
||||
`In octo-org/octo-repo, create an issue to add server-side validation for the createUser API endpoint. Include an example of how to validate the request body using an existing middleware pattern. Label it with "backend" and "enhancement".`
|
||||
|
||||
## Example response
|
||||
|
||||
{% data reusables.copilot.example-prompts.response-is-an-example %}
|
||||
|
||||
When you submit the prompt, {% data variables.copilot.copilot_chat_short %} generates a draft issue based on your description and includes a code snippet. You can review and edit the draft before creating the issue.
|
||||
|
||||
```markdown
|
||||
## Problem
|
||||
The `createUser` API endpoint currently lacks robust server-side validation for incoming requests. To ensure data integrity and security, we should validate the request body before proceeding with user creation.
|
||||
|
||||
**Current API endpoint:**
|
||||
// Route
|
||||
app.post('/users', validateCreateUser, (req, res) => {
|
||||
const { username, email } = req.body;
|
||||
// Simulate user creation
|
||||
res.status(201).json({ message: 'User created', user: { username, email } });
|
||||
});
|
||||
|
||||
## Proposal
|
||||
- Add server-side validation for the request body using the existing middleware pattern.
|
||||
- Ensure required fields (`username`, `email`) are present and valid.
|
||||
- Return a 400 Bad Request response if validation fails.
|
||||
|
||||
**Example (middleware pattern):**
|
||||
function validateCreateUser(req, res, next) {
|
||||
const { username, email } = req.body;
|
||||
if (!username || !email) {
|
||||
return res.status(400).json({ error: 'Username and email are required.' });
|
||||
}
|
||||
// Additional validation logic here
|
||||
next();
|
||||
}
|
||||
|
||||
app.post('/users', validateCreateUser, (req, res) => {
|
||||
// ...
|
||||
});
|
||||
|
||||
|
||||
## Acceptance Criteria
|
||||
- Server-side validation middleware is added to the `createUser` endpoint.
|
||||
- Request body is properly validated.
|
||||
- Appropriate error responses are returned for invalid requests.
|
||||
```
|
||||
Reference in New Issue
Block a user